save_handler.inc 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. DEFINE("SESSION_FILE_PREFIX" ,"session_test_");
  3. function open($save_path, $session_name) {
  4. global $session_save_path, $name;
  5. $session_save_path = $save_path;
  6. $name = $session_name;
  7. echo "Open [${session_save_path},${session_name}]\n";
  8. return true;
  9. }
  10. function close() {
  11. global $session_save_path, $name;
  12. echo "Close [${session_save_path},${name}]\n";
  13. return true;
  14. }
  15. function read($id) {
  16. global $session_save_path, $name, $session_id;
  17. $session_id = $id;
  18. echo "Read [${session_save_path},${id}]\n";
  19. $session_file = "$session_save_path/".SESSION_FILE_PREFIX.$id;
  20. return (string) @file_get_contents($session_file);
  21. }
  22. function write($id, $session_data) {
  23. global $session_save_path, $name, $session_id;
  24. $session_id = $id;
  25. echo "Write [${session_save_path},${id},${session_data}]\n";
  26. $session_file = "$session_save_path/".SESSION_FILE_PREFIX.$id;
  27. if ($fp = fopen($session_file, "w")) {
  28. $return = fwrite($fp, $session_data);
  29. fclose($fp);
  30. return $return;
  31. }
  32. return false;
  33. }
  34. function destroy($id) {
  35. global $session_save_path, $name;
  36. echo "Destroy [${session_save_path},${id}]\n";
  37. $session_file = "$session_save_path/".SESSION_FILE_PREFIX.$id;
  38. return unlink($session_file);
  39. }
  40. function gc($maxlifetime) {
  41. global $session_save_path, $name;
  42. $directory = opendir($session_save_path."/");
  43. $length = strlen(SESSION_FILE_PREFIX);
  44. while (($file = readdir($directory)) !== FALSE) {
  45. $qualified = ($session_save_path."/".$file);
  46. if (is_file($qualified) === TRUE) {
  47. if (substr($file, 0, $length) === SESSION_FILE_PREFIX) {
  48. unlink($qualified);
  49. }
  50. }
  51. }
  52. closedir($directory);
  53. return true;
  54. }
  55. ?>