PageRenderTime 53ms CodeModel.GetById 30ms RepoModel.GetById 0ms app.codeStats 0ms

/src/class/core/Session.class.php

https://bitbucket.org/stk2k/charcoalphp2.1
PHP | 153 lines | 66 code | 28 blank | 59 comment | 1 complexity | 2c62b2ca835f90e80aa4bc31a3f2dce8 MD5 | raw file
  1. <?php
  2. /**
  3. * セッションをラップするクラス
  4. *
  5. * PHP version 5
  6. *
  7. * @package class.core
  8. * @author CharcoalPHP Development Team
  9. * @copyright 2008 stk2k, sazysoft
  10. */
  11. class Charcoal_Session extends Charcoal_HashMap
  12. {
  13. const TAG = "session";
  14. /*
  15. * セッション名を取得
  16. */
  17. public function getName()
  18. {
  19. return session_name();
  20. }
  21. /*
  22. * セッション保存場所を取得
  23. */
  24. public function getSavePath()
  25. {
  26. return session_save_path();
  27. }
  28. /*
  29. * セッションクッキーのパラメータを取得
  30. */
  31. public function getCookieParameter( Charcoal_String $key )
  32. {
  33. $a = session_get_cookie_params();
  34. $key = us( $key );
  35. return isset($a[$key]) ? $a[$key] : NULL;
  36. }
  37. /*
  38. * セッションクッキーのパラメータをすべて取得
  39. */
  40. public function getCookieParameters()
  41. {
  42. return session_get_cookie_params();
  43. }
  44. /*
  45. * ID初期化
  46. */
  47. public function regenerateID()
  48. {
  49. // $old_id = session_id();
  50. $result = session_regenerate_id( TRUE );
  51. // $new_id = session_id();
  52. // log_info( "debug, session", "regenerateID() old=$old_id new=$new_id result=" . ($result ? "TRUE" : "FALSE") );
  53. }
  54. /**
  55. * セッションを開始する
  56. */
  57. public function start()
  58. {
  59. session_cache_limiter('private, must-revalidate');
  60. // session_cache_limiter('private');
  61. // session_cache_limiter('private_no_expire');
  62. // session_cache_limiter('nocache');
  63. session_start();
  64. // log_info( "debug, session", "start() session_id=" . session_id() . " IP=" . $_SERVER["REMOTE_ADDR"] );
  65. }
  66. /**
  67. * セッションを終了する
  68. */
  69. public function close()
  70. {
  71. session_write_close();
  72. // log_info( "debug, session", "close()" );
  73. }
  74. /*
  75. * セッションを破棄
  76. */
  77. public function destroy()
  78. {
  79. session_unset();
  80. session_destroy();
  81. // log_info( "debug, session", "destroy()" );
  82. }
  83. /**
  84. * セッションを復元する
  85. */
  86. public function restore()
  87. {
  88. // log_info( "debug, session", "restore() start" );
  89. // log_info( "debug, session", "_SESSION:" . print_r($_SESSION,true) );
  90. // log_info( "debug, session", "this->values:" . print_r($this->values,true) );
  91. // 配列の初期化
  92. $this->clear();
  93. log_info( "debug, session", "_SESSION:" . print_r($_SESSION,true), self::TAG );
  94. // 各配列の値をデシリアライズ
  95. $keys = array_keys( $_SESSION );
  96. if ( $keys ){
  97. foreach( $keys as $key ){
  98. $value = unserialize( $_SESSION[$key] );
  99. $this->set( $key, $value );
  100. log_info( "debug, session", "[$key]=" . print_r($value,true), self::TAG );
  101. }
  102. }
  103. log_info( "debug, session", "restored :" . print_r($this->values,true), self::TAG );
  104. // log_info( "debug, session", "restore() end" );
  105. }
  106. /**
  107. * セッションを保存する
  108. */
  109. public function save()
  110. {
  111. // log_info( "debug, session", 'save() start' );
  112. // 初期化しておく
  113. $_SESSION = array();
  114. $keys = $this->getKeys();
  115. // log_info( "debug, session", "keys:" . print_r($keys,true) );
  116. // メモリ上に設定されたキーの値をシリアライズ
  117. foreach( $keys as $key ){
  118. $value = $this->get( s($key) );
  119. $_SESSION[ $key ] = serialize($value);
  120. log_info( "debug, session", "saved [$key]=" . print_r($value,true), self::TAG );
  121. }
  122. log_info( "debug, session", "_SESSION=" . print_r($_SESSION,true), self::TAG );
  123. // log_info( "debug, session", 'save() end' );
  124. }
  125. }