{"id":199468,"date":"2025-05-03T12:46:59","date_gmt":"2025-05-03T04:46:59","guid":{"rendered":"https:\/\/server.hk\/cnblog\/199468\/"},"modified":"2025-05-03T12:46:59","modified_gmt":"2025-05-03T04:46:59","slug":"ecshop%e5%88%a9%e7%94%a8%e5%85%a8%e5%b1%80%e5%8f%98%e9%87%8f_session%e5%92%8cregister_shutdown_function%e8%87%aa%e5%ae%9a%e4%b9%89%e4%bc%9a%e8%af%9d","status":"publish","type":"post","link":"https:\/\/server.hk\/cnblog\/199468\/","title":{"rendered":"ecshop\u5229\u7528\u5168\u5c40\u53d8\u91cf$_SESSION\u548cregister_shutdown_function\u81ea\u5b9a\u4e49\u4f1a\u8bdd"},"content":{"rendered":"<p>\u5728\u505aecshop\u7684\u4e8c\u6b21\u5f00\u53d1\u8fc7\u7a0b\u4e2d,\u867d\u7136\u4ee3\u7801 \u592a\u8001\u592a\u4e71\u592a\u5197\u4f59\uff0c\u4f46ec\u7684\u4f1a\u8bdd\u5904\u7406\u7684\u8bbe\u8ba1\u611f\u89c9\u8fd8\u662f\u4e0d\u9519\u7684,\u5c31\u4f7f\u7528\u4e86$_SESSION\u8fd9\u4e2a\u5168\u5c40\u53d8\u91cf\u800c\u5df2,\u8fd9\u4e2a\u8bbe\u8ba1\u662f\u6700\u597d\u6539\u5584\u539f\u6765\u7684\u4f1a\u8bdd\u5904\u7406\u65b9\u5f0f\u7684\u5b58\u6570\u636e\u5e93\u8868\u7684\u8bdd,\u67092\u5f20\u8868,sessions \u8868\u4f7f\u7528\u5185\u5b58\u5b58\u50a8\u5f15\u64ce\uff0c\u4f1a\u8bdd\u5c5e\u4e8e\u4e34\u65f6\u6570\u636e\uff0c\u8fd9\u6837\u5b58\u53d6\u901f\u5ea6\u5f88\u5feb,\u5f53\u7136\u5f53\u4e34\u65f6\u6570\u636e\u5f88\u591a\u65f6,\u4f1a\u5360\u7528\u5185\u5b58\u7a7a\u95f4,\u5bf9\u4e8e\u8f83\u591a\u7684\u6570\u636e \u8fd8\u662f\u9700\u8981\u5b58\u5728\u78c1\u76d8\u4e0a,\u8fd9\u662f\u5c31\u9700\u8981sessions_data \u505a\u4e00\u4e2asessions\u8868\u7684\u5173\u8054\u6765\u5b58\u50a8\u8f83\u591a\u7684\u989d\u5916\u6570\u636e.register_shutdown_function \u53ef\u4ee5\u6ce8\u518c\u4e00\u4e2a\u81ea\u5b9a\u4e49\u7684\u51fd\u6570\uff0c\u5728\u7a0b\u5e8f\u8fd0\u884c\u7ed3\u675f\u4e4b\u524d \u6267\u884c\u3002   &nbsp;   \u8868\u7ed3\u6784   &nbsp;   &nbsp;   &nbsp;   CREATE TABLE `sessions` (   &nbsp; `sesskey` char(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT &#8221;,   &nbsp; `expiry` int(10) unsigned NOT NULL DEFAULT &#8216;0&#8217;,   &nbsp; `userid` mediumint(8) unsigned NOT NULL DEFAULT &#8216;0&#8217;,   &nbsp; `adminid` mediumint(8) unsigned NOT NULL DEFAULT &#8216;0&#8217;,   &nbsp; `ip` char(15) NOT NULL DEFAULT &#8221;,   &nbsp; `user_name` varchar(60) NOT NULL,   &nbsp; `user_rank` tinyint(3) NOT NULL,   &nbsp; `discount` decimal(3,2) NOT NULL,   &nbsp; `email` varchar(60) NOT NULL,   &nbsp; `data` char(255) NOT NULL DEFAULT &#8221;,   &nbsp; PRIMARY KEY (`sesskey`),   &nbsp; KEY `expiry` (`expiry`)   ) ENGINE=MEMORY DEFAULT CHARSET=utf8;   &nbsp;   CREATE TABLE `sessions_data` (   &nbsp; `sesskey` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT &#8221;,   &nbsp; `expiry` int(10) unsigned NOT NULL DEFAULT &#8216;0&#8217;,   &nbsp; `data` longtext NOT NULL,   &nbsp; PRIMARY KEY (`sesskey`),   &nbsp; KEY `expiry` (`expiry`)   ) ENGINE=MyISAM DEFAULT CHARSET=utf8;   \u590d\u5236\u4ee3\u7801   &nbsp;   &nbsp;   &nbsp;   &nbsp;   \u7a0b\u5e8f\u6587\u4ef6\u6839\u636eecshop\u7684\u7c7b\u6709\u6539\u52a8   &nbsp;   cls_session.php   &nbsp;   db.php \u6570\u636e\u5e93\u5904\u7406   &nbsp;   fun.php \u7528\u5230\u7684\u51fd\u6570   &nbsp;   init.php \u521d\u59cb\u5316\u7a0b\u5e8f\u6587\u4ef6   &nbsp;   &#8212;&#8212;&#8212;&#8212;&#8211;   &nbsp;   \u4e24\u4e2ademo\u7a0b\u5e8f   &nbsp;   set.php   &nbsp;   get.php   &nbsp;   \u7a0b\u5e8f\u6587\u4ef6\u5185\u5bb9   &nbsp;   cls_session.php   &nbsp;   &nbsp;   &nbsp;   &lt;?php   &nbsp;   class cls_session   {   &nbsp; &nbsp; public $db = NULL;   &nbsp; &nbsp; public $session_table = &#8221;;   &nbsp;   &nbsp; &nbsp; public $max_life_time = 1800;   &nbsp;   &nbsp; &nbsp; public $session_name = &#8221;;   &nbsp; &nbsp; public $session_id = &#8221;;   &nbsp;   &nbsp; &nbsp; public $session_expiry = &#8221;;   &nbsp; &nbsp; public $session_md5 = &#8221;;   &nbsp;   &nbsp; &nbsp; public $session_cookie_path = &#8216;\/&#8217;;   &nbsp; &nbsp; public $session_cookie_domain = &#8221;;   &nbsp; &nbsp; public $session_cookie_secure = false;   &nbsp;   &nbsp; &nbsp; public $_ip = &#8221;;   &nbsp; &nbsp; public $_time = 0;   &nbsp;   &nbsp; &nbsp; public function __construct(&amp;$db, $session_table, $session_data_table, $session_name = &#8216;ECS_ID&#8217;, $session_id = &#8221;)   &nbsp; &nbsp; {   &nbsp; &nbsp; &nbsp; &nbsp; $_SESSION = array();   &nbsp; &nbsp; &nbsp; &nbsp; $this-&gt;session_cookie_path = !empty($GLOBALS[&#8216;cookie_path&#8217;]) ? $GLOBALS[&#8216;cookie_path&#8217;] : &#8220;\/&#8221;;   &nbsp; &nbsp; &nbsp; &nbsp; $this-&gt;session_cookie_domain = !empty($GLOBALS[&#8216;cookie_domain&#8217;]) ? $GLOBALS[&#8216;cookie_domain&#8217;] : &#8221;;   &nbsp; &nbsp; &nbsp; &nbsp; $this-&gt;session_cookie_secure = !empty($GLOBALS[&#8216;cookie_secure&#8217;]) ? $GLOBALS[&#8216;cookie_secure&#8217;] : false;   &nbsp;   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; $this-&gt;session_name = $session_name;   &nbsp; &nbsp; &nbsp; &nbsp; $this-&gt;session_table = $session_table;   &nbsp; &nbsp; &nbsp; &nbsp; $this-&gt;session_data_table = $session_data_table;   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; $this-&gt;db = &amp;$db;   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; $this-&gt;_ip = real_ip();   &nbsp; &nbsp; &nbsp; &nbsp; $this-&gt;_time = time();   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; $this-&gt;session_id = $session_id == &#8221; &amp;&amp; !empty($_COOKIE[$this-&gt;session_name]) ? $_COOKIE[$this-&gt;session_name] : $session_id;   &nbsp; &nbsp; &nbsp; &nbsp; if ($this-&gt;session_id) {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $tmp_session_id = substr($this-&gt;session_id, 0, 32);   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($this-&gt;gen_session_key($tmp_session_id) == substr($this-&gt;session_id, 32)) {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $this-&gt;session_id = $tmp_session_id;   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $this-&gt;session_id = &#8221;;   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp;   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; if ($this-&gt;session_id) {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $this-&gt;load_session();   &nbsp; &nbsp; &nbsp; &nbsp; } else {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $this-&gt;gen_session_id();   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setcookie($this-&gt;session_name, $this-&gt;session_id . $this-&gt;gen_session_key($this-&gt;session_id), 0, $this-&gt;session_cookie_path, $this-&gt;session_cookie_domain, $this-&gt;session_cookie_secure);   &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; register_shutdown_function(array(&amp;$this, &#8216;close_session&#8217;));   &nbsp; &nbsp; }   &nbsp;   &nbsp; &nbsp; public function gen_session_id()   &nbsp; &nbsp; {   &nbsp; &nbsp; &nbsp; &nbsp; $this-&gt;session_id = md5(uniqid(mt_rand(), true));   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; return $this-&gt;insert_session();   &nbsp; &nbsp; }   &nbsp;   &nbsp; &nbsp; public function gen_session_key($session_id)   &nbsp; &nbsp; {   &nbsp; &nbsp; &nbsp; &nbsp; static $ip = &#8221;;   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; if ($ip == &#8221;) {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ip = substr($this-&gt;_ip, 0, strrpos($this-&gt;_ip, &#8216;.&#8217;));   &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; return sprintf(&#8216;%08x&#8217;, crc32(ROOT_PATH . $ip . $session_id));   &nbsp; &nbsp; }   &nbsp;   &nbsp; &nbsp; public function insert_session()   &nbsp; &nbsp; {   &nbsp; &nbsp; &nbsp; &nbsp; return $this-&gt;db-&gt;exec(&#8216;INSERT INTO &#8216; . $this-&gt;session_table . &#8221; (sesskey, expiry, ip, data) VALUES (&#8216;&#8221; . $this-&gt;session_id . &#8220;&#8216;, &#8216;&#8221; . $this-&gt;_time . &#8220;&#8216;, &#8216;&#8221; . $this-&gt;_ip . &#8220;&#8216;, &#8216;a:0:{}&#8217;)&#8221;);   &nbsp; &nbsp; }   &nbsp;   &nbsp; &nbsp; public function load_session()   &nbsp; &nbsp; {   &nbsp; &nbsp; &nbsp; &nbsp; $session = $this-&gt;db-&gt;getOne(&#8216;SELECT userid, adminid, user_name, user_rank, discount, email, data, expiry FROM &#8216; . $this-&gt;session_table . &#8221; WHERE sesskey = &#8216;&#8221; . $this-&gt;session_id . &#8220;&#8216;&#8221;);   &nbsp; &nbsp; &nbsp; &nbsp; if (empty($session)) {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $this-&gt;insert_session();   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $this-&gt;session_expiry = 0;   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $this-&gt;session_md5 = &#8217;40cd750bba9870f18aada2478b24840a&#8217;;   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $_SESSION = array();   &nbsp; &nbsp; &nbsp; &nbsp; } else {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (!empty($session[&#8216;data&#8217;]) &amp;&amp; $this-&gt;_time &#8211; $session[&#8216;expiry&#8217;] &lt;= $this-&gt;max_life_time) {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $this-&gt;session_expiry = $session[&#8216;expiry&#8217;];   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $this-&gt;session_md5 = md5($session[&#8216;data&#8217;]);   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $_SESSION = unserialize($session[&#8216;data&#8217;]);   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $_SESSION[&#8216;user_id&#8217;] = $session[&#8216;userid&#8217;];   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $_SESSION[&#8216;admin_id&#8217;] = $session[&#8216;adminid&#8217;];   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $_SESSION[&#8216;user_name&#8217;] = $session[&#8216;user_name&#8217;];   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $_SESSION[&#8216;user_rank&#8217;] = $session[&#8216;user_rank&#8217;];   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $_SESSION[&#8216;discount&#8217;] = $session[&#8216;discount&#8217;];   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $_SESSION[&#8217;email&#8217;] = $session[&#8217;email&#8217;];   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $session_data = $this-&gt;db-&gt;getOne(&#8216;SELECT data, expiry FROM &#8216; . $this-&gt;session_data_table . &#8221; WHERE sesskey = &#8216;&#8221; . $this-&gt;session_id . &#8220;&#8216;&#8221;);   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (!empty($session_data[&#8216;data&#8217;]) &amp;&amp; $this-&gt;_time &#8211; $session_data[&#8216;expiry&#8217;] &lt;= $this-&gt;max_life_time) {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $this-&gt;session_expiry = $session_data[&#8216;expiry&#8217;];   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $this-&gt;session_md5 = md5($session_data[&#8216;data&#8217;]);   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $_SESSION = unserialize($session_data[&#8216;data&#8217;]);   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $_SESSION[&#8216;user_id&#8217;] = $session[&#8216;userid&#8217;];   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $_SESSION[&#8216;admin_id&#8217;] = $session[&#8216;adminid&#8217;];   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $_SESSION[&#8216;user_name&#8217;] = $session[&#8216;user_name&#8217;];   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $_SESSION[&#8216;user_rank&#8217;] = $session[&#8216;user_rank&#8217;];   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $_SESSION[&#8216;discount&#8217;] = $session[&#8216;discount&#8217;];   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $_SESSION[&#8217;email&#8217;] = $session[&#8217;email&#8217;];   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $this-&gt;session_expiry = 0;   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $this-&gt;session_md5 = &#8217;40cd750bba9870f18aada2478b24840a&#8217;;   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $_SESSION = array();   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp; &nbsp; }   &nbsp;   &nbsp; &nbsp; public function update_session()   &nbsp; &nbsp; {   &nbsp; &nbsp; &nbsp; &nbsp; $adminid = !empty($_SESSION[&#8216;admin_id&#8217;]) ? intval($_SESSION[&#8216;admin_id&#8217;]) : 0;   &nbsp; &nbsp; &nbsp; &nbsp; $userid = !empty($_SESSION[&#8216;user_id&#8217;]) ? intval($_SESSION[&#8216;user_id&#8217;]) : 0;   &nbsp; &nbsp; &nbsp; &nbsp; $user_name = !empty($_SESSION[&#8216;user_name&#8217;]) ? trim($_SESSION[&#8216;user_name&#8217;]) : 0;   &nbsp; &nbsp; &nbsp; &nbsp; $user_rank = !empty($_SESSION[&#8216;user_rank&#8217;]) ? intval($_SESSION[&#8216;user_rank&#8217;]) : 0;   &nbsp; &nbsp; &nbsp; &nbsp; $discount = !empty($_SESSION[&#8216;discount&#8217;]) ? round($_SESSION[&#8216;discount&#8217;], 2) : 0;   &nbsp; &nbsp; &nbsp; &nbsp; $email = !empty($_SESSION[&#8217;email&#8217;]) ? trim($_SESSION[&#8217;email&#8217;]) : 0;   &nbsp; &nbsp; &nbsp; &nbsp; unset($_SESSION[&#8216;admin_id&#8217;]);   &nbsp; &nbsp; &nbsp; &nbsp; unset($_SESSION[&#8216;user_id&#8217;]);   &nbsp; &nbsp; &nbsp; &nbsp; unset($_SESSION[&#8216;user_name&#8217;]);   &nbsp; &nbsp; &nbsp; &nbsp; unset($_SESSION[&#8216;user_rank&#8217;]);   &nbsp; &nbsp; &nbsp; &nbsp; unset($_SESSION[&#8216;discount&#8217;]);   &nbsp; &nbsp; &nbsp; &nbsp; unset($_SESSION[&#8217;email&#8217;]);   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; $data = serialize($_SESSION);   &nbsp; &nbsp; &nbsp; &nbsp; $this-&gt;_time = time();   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; if ($this-&gt;session_md5 == md5($data) &amp;&amp; $this-&gt;_time &lt; $this-&gt;session_expiry + 10) {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return true;   &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; $data = addslashes($data);   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; if (isset($data{255})) {   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $this-&gt;db-&gt;autoReplace($this-&gt;session_data_table, array(&#8216;sesskey&#8217; =&gt; $this-&gt;session_id, &#8216;expiry&#8217; =&gt; $this-&gt;_time, &#8216;data&#8217; =&gt; $data), array(&#8216;expiry&#8217; =&gt; $this-&gt;_time, &#8216;data&#8217; =&gt; $data));   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $data = &#8221;;   &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; return $this-&gt;db-&gt;exec(&#8216;UPDATE &#8216; . $this-&gt;session_table . &#8221; SET expiry = &#8216;&#8221; . $this-&gt;_time . &#8220;&#8216;, ip = &#8216;&#8221; . $this-&gt;_ip . &#8220;&#8216;, userid = &#8216;&#8221; . $userid . &#8220;&#8216;, adminid = &#8216;&#8221; . $adminid . &#8220;&#8216;, user_name='&#8221; . $user_name . &#8220;&#8216;, user_rank='&#8221; . $user_rank . &#8220;&#8216;, discount='&#8221; . $discount . &#8220;&#8216;, email='&#8221; . $email . &#8220;&#8216;, data = &#8216;$data&#8217; WHERE sesskey = &#8216;&#8221; . $this-&gt;session_id . &#8220;&#8216; LIMIT 1&#8243;);   &nbsp; &nbsp; }   &nbsp;   &nbsp; &nbsp; public function close_session()   &nbsp; &nbsp; {   &nbsp; &nbsp; &nbsp; &nbsp; $this-&gt;update_session();   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; if (mt_rand(0, 2) == 2) {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $this-&gt;db-&gt;query(&#8216;DELETE FROM &#8216; . $this-&gt;session_data_table . &#8216; WHERE expiry &lt; &#8216; . ($this-&gt;_time &#8211; $this-&gt;max_life_time));   &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; if ((time() % 2) == 0) {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return $this-&gt;db-&gt;query(&#8216;DELETE FROM &#8216; . $this-&gt;session_table . &#8216; WHERE expiry &lt; &#8216; . ($this-&gt;_time &#8211; $this-&gt;max_life_time));   &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; return true;   &nbsp; &nbsp; }   &nbsp;   &nbsp; &nbsp; public function delete_spec_admin_session($adminid)   &nbsp; &nbsp; {   &nbsp; &nbsp; &nbsp; &nbsp; if (!empty($_SESSION[&#8216;admin_id&#8217;]) &amp;&amp; $adminid) {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return $this-&gt;db-&gt;query(&#8216;DELETE FROM &#8216; . $this-&gt;session_table . &#8221; WHERE adminid = &#8216;$adminid'&#8221;);   &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; return false;   &nbsp; &nbsp; }   &nbsp;   &nbsp; &nbsp; public function destroy_session()   &nbsp; &nbsp; {   &nbsp; &nbsp; &nbsp; &nbsp; $_SESSION = array();   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; setcookie($this-&gt;session_name, $this-&gt;session_id, 1, $this-&gt;session_cookie_path, $this-&gt;session_cookie_domain, $this-&gt;session_cookie_secure);   &nbsp;   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; $this-&gt;db-&gt;query(&#8216;DELETE FROM &#8216; . $this-&gt;session_data_table . &#8221; WHERE sesskey = &#8216;&#8221; . $this-&gt;session_id . &#8220;&#8216; LIMIT 1&#8243;);   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; return $this-&gt;db-&gt;query(&#8216;DELETE FROM &#8216; . $this-&gt;session_table . &#8221; WHERE sesskey = &#8216;&#8221; . $this-&gt;session_id . &#8220;&#8216; LIMIT 1&#8243;);   &nbsp; &nbsp; }   &nbsp;   &nbsp; &nbsp; public function get_session_id()   &nbsp; &nbsp; {   &nbsp; &nbsp; &nbsp; &nbsp; return $this-&gt;session_id;   &nbsp; &nbsp; }   &nbsp;   &nbsp; &nbsp; public function get_users_count()   &nbsp; &nbsp; {   &nbsp; &nbsp; &nbsp; &nbsp; return $this-&gt;db-&gt;getOne(&#8216;SELECT count(*) FROM &#8216; . $this-&gt;session_table);   &nbsp; &nbsp; }   &nbsp;   }   &nbsp;   &nbsp;   ?&gt;   &nbsp;   db.php   &nbsp;   &nbsp;   &nbsp;   &lt;?php   class db{   &nbsp; &nbsp; protected $pdo;   &nbsp; &nbsp; public function __construct($dsn,$user,$pwd,$opt=&#8221;){   &nbsp; &nbsp; &nbsp; &nbsp; $this-&gt;pdo= new PDO($dsn,$user,$pwd,$opt);   &nbsp; &nbsp; }   &nbsp; &nbsp; public function getRow($sql, $limited = false){   &nbsp; &nbsp; &nbsp; &nbsp; $sql=$limited==true?trim($sql . &#8216; LIMIT 1&#8217;):$sql;   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; $pdo_statement = $this-&gt;pdo-&gt;query($sql);   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; if($pdo_statement){   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $res=$pdo_statement-&gt;fetchAll(PDO::FETCH_ASSOC);   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if($limited) return $res[0];   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return $res;   &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp; &nbsp; &nbsp; &nbsp; return false;   &nbsp; &nbsp; }   &nbsp; &nbsp; public function getOne($sql){   &nbsp; &nbsp; &nbsp; &nbsp; $sql=trim($sql . &#8216; LIMIT 1&#8217;);   &nbsp; &nbsp; &nbsp; &nbsp; $pdo_statement = $this-&gt;pdo-&gt;query($sql);   &nbsp; &nbsp; &nbsp; &nbsp; if($pdo_statement){   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $res=$pdo_statement-&gt;fetch(PDO::FETCH_ASSOC);   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return $res;   &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp; &nbsp; &nbsp; &nbsp; return false;   &nbsp; &nbsp; }   &nbsp;   &nbsp; &nbsp; public function autoReplace($table, $field_values, $update_values, $where = &#8221;)   &nbsp; &nbsp; {   &nbsp; &nbsp; &nbsp; &nbsp; $field_descs = $this-&gt;getAll(&#8216;DESC &#8216; . $table);   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; $primary_keys = array();   &nbsp; &nbsp; &nbsp; &nbsp; foreach ($field_descs AS $value)   &nbsp; &nbsp; &nbsp; &nbsp; {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $field_names[] = $value[&#8216;Field&#8217;];   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($value[&#8216;Key&#8217;] == &#8216;PRI&#8217;)   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $primary_keys[] = $value[&#8216;Field&#8217;];   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; $fields = $values = array();   &nbsp; &nbsp; &nbsp; &nbsp; foreach ($field_names AS $value)   &nbsp; &nbsp; &nbsp; &nbsp; {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (array_key_exists($value, $field_values) == true)   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $fields[] = $value;   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $values[] = &#8220;&#8216;&#8221; . $field_values[$value] . &#8220;&#8216;&#8221;;   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; $sets = array();   &nbsp; &nbsp; &nbsp; &nbsp; foreach ($update_values AS $key =&gt; $value)   &nbsp; &nbsp; &nbsp; &nbsp; {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (array_key_exists($key, $field_values) == true)   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (is_int($value) || is_float($value))   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $sets[] = $key . &#8216; = &#8216; . $key . &#8216; + &#8216; . $value;   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $sets[] = $key . &#8221; = &#8216;&#8221; . $value . &#8220;&#8216;&#8221;;   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; $sql = &#8221;;   &nbsp; &nbsp; &nbsp; &nbsp; if (empty($primary_keys))   &nbsp; &nbsp; &nbsp; &nbsp; {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (!empty($fields))   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $sql = &#8216;INSERT INTO &#8216; . $table . &#8216; (&#8216; . implode(&#8216;, &#8216;, $fields) . &#8216;) VALUES (&#8216; . implode(&#8216;, &#8216;, $values) . &#8216;)&#8217;;   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp; &nbsp; &nbsp; &nbsp; else   &nbsp; &nbsp; &nbsp; &nbsp; {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (empty($where))   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $where = array();   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; foreach ($primary_keys AS $value)   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (is_numeric($value))   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $where[] = $value . &#8216; = &#8216; . $field_values[$value];   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $where[] = $value . &#8221; = &#8216;&#8221; . $field_values[$value] . &#8220;&#8216;&#8221;;   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $where = implode(&#8216; AND &#8216;, $where);   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($where &amp;&amp; (!empty($sets) || !empty($fields)))   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $count=$this-&gt;getOne(&#8220;SELECT COUNT(*) &nbsp;as count FROM $table WHERE $where&#8221;);   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $count=$count[&#8216;count&#8217;];   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (intval($count) &gt; 0)   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (!empty($sets))   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $sql = &#8216;UPDATE &#8216; . $table . &#8216; SET &#8216; . implode(&#8216;, &#8216;, $sets) . &#8216; WHERE &#8216; . $where;   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (!empty($fields))   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $sql = &#8216;REPLACE INTO &#8216; . $table . &#8216; (&#8216; . implode(&#8216;, &#8216;, $fields) . &#8216;) VALUES (&#8216; . implode(&#8216;, &#8216;, $values) . &#8216;)&#8217;;   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; return $sql?$this-&gt;exec($sql):false;   &nbsp;   &nbsp; &nbsp; }   &nbsp; &nbsp; public function getAll($sql)   &nbsp; &nbsp; {   &nbsp; &nbsp; &nbsp; &nbsp; $res = $this-&gt;pdo-&gt;query($sql);   &nbsp; &nbsp; &nbsp; &nbsp; if ($res !== false)   &nbsp; &nbsp; &nbsp; &nbsp; {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $arr = array();   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; while ($row = $res-&gt;fetch(PDO::FETCH_ASSOC))   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $arr[] = $row;   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return $arr;   &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp; &nbsp; &nbsp; &nbsp; return false;   &nbsp; &nbsp; }   &nbsp;   &nbsp; &nbsp; public function __call($method,$args){   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; return call_user_func(array($this-&gt;pdo,$method),$args[0]);   &nbsp; &nbsp; }   }   &nbsp;   fun.php   &nbsp;   &nbsp;   &nbsp;   &lt;?php   &nbsp;   function real_ip()   {   &nbsp; &nbsp; static $realip = NULL;   &nbsp;   &nbsp; &nbsp; if ($realip !== NULL) {   &nbsp; &nbsp; &nbsp; &nbsp; return $realip;   &nbsp; &nbsp; }   &nbsp;   &nbsp; &nbsp; if (isset($_SERVER)) {   &nbsp; &nbsp; &nbsp; &nbsp; if (isset($_SERVER[&#8216;HTTP_X_FORWARDED_FOR&#8217;])) {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $arr = explode(&#8216;,&#8217;, $_SERVER[&#8216;HTTP_X_FORWARDED_FOR&#8217;]);   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \/* \u53d6X-Forwarded-For\u4e2d\u7b2c\u4e00\u4e2a\u975eunknown\u7684\u6709\u6548IP\u5b57\u7b26\u4e32 *\/   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; foreach ($arr AS $ip) {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ip = trim($ip);   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($ip != &#8216;unknown&#8217;) {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $realip = $ip;   &nbsp;   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp; &nbsp; &nbsp; &nbsp; } elseif (isset($_SERVER[&#8216;HTTP_CLIENT_IP&#8217;])) {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $realip = $_SERVER[&#8216;HTTP_CLIENT_IP&#8217;];   &nbsp; &nbsp; &nbsp; &nbsp; } else {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (isset($_SERVER[&#8216;REMOTE_ADDR&#8217;])) {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $realip = $_SERVER[&#8216;REMOTE_ADDR&#8217;];   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $realip = &#8216;0.0.0.0&#8217;;   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp; &nbsp; } else {   &nbsp; &nbsp; &nbsp; &nbsp; if (getenv(&#8216;HTTP_X_FORWARDED_FOR&#8217;)) {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $realip = getenv(&#8216;HTTP_X_FORWARDED_FOR&#8217;);   &nbsp; &nbsp; &nbsp; &nbsp; } elseif (getenv(&#8216;HTTP_CLIENT_IP&#8217;)) {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $realip = getenv(&#8216;HTTP_CLIENT_IP&#8217;);   &nbsp; &nbsp; &nbsp; &nbsp; } else {   &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $realip = getenv(&#8216;REMOTE_ADDR&#8217;);   &nbsp; &nbsp; &nbsp; &nbsp; }   &nbsp; &nbsp; }   &nbsp;   &nbsp; &nbsp; preg_match(&#8220;\/[\\d\\.]{7,15}\/&#8221;, $realip, $onlineip);   &nbsp; &nbsp; $realip = !empty($onlineip[0]) ? $onlineip[0] : &#8216;0.0.0.0&#8217;;   &nbsp;   &nbsp; &nbsp; return $realip;   }   &nbsp;   init.php   &nbsp;   &nbsp;   &nbsp;   &lt;?php   define(&#8220;ROOT_PATH&#8221;,__DIR__);   include &#8220;db.php&#8221;;   include &#8220;fun.php&#8221;;   include &#8220;cls_session.php&#8221;;   $dsn=&#8217;mysql:dbname=test;host=127.0.0.1&#8242;;   $user=&#8221;root&#8221;;   $passwd=&#8221;&#8221;;   $opt=array(   &nbsp; &nbsp; PDO :: ATTR_PERSISTENT &nbsp;=&gt; &nbsp;true   );   $db=new db($dsn,$user,$passwd,$opt);   &nbsp;   &nbsp;   $cls=new cls_session($db,&#8217;sessions&#8217;,&#8221;sessions_data&#8221;);   \u590d\u5236\u4ee3\u7801   \u4e0b\u9762\u662f2\u4e2a\u8fd0\u884c\u6d4b\u8bd5\u7a0b\u5e8f   &nbsp;   set.php   &nbsp;   &nbsp;   &nbsp;   &lt;?php   include &#8220;init.php&#8221;;   $_SESSION[&#8216;a&#8217;]=&#8221;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajax&#8221;;   \/\/$_SESSION[&#8216;b&#8217;]=&#8221;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajax11212312333333333333333333333333333333333333333333333333333333333333333&#8243;;   \/\/$_SESSION[&#8216;c&#8217;]=&#8221;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajax11212312333333333333333333333333333333333333333333333333333333333333333&#8243;;   \/\/$_SESSION[&#8216;d&#8217;]=&#8221;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajax11212312333333333333333333333333333333333333333333333333333333333333333&#8243;;   \/\/$_SESSION[&#8216;e&#8217;]=&#8221;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajax11212312333333333333333333333333333333333333333333333333333333333333333&#8243;;   \/\/$_SESSION[&#8216;f&#8217;]=&#8221;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajax11212312333333333333333333333333333333333333333333333333333333333333333&#8243;;   \/\/$_SESSION[&#8216;g&#8217;]=&#8221;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajax11212312333333333333333333333333333333333333333333333333333333333333333&#8243;;   $_SESSION[&#8216;h&#8217;]=&#8221;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajax11212312333333333333333333333333333333333333333333333333333333333333333&#8243;;   $_SESSION[&#8216;i&#8217;]=&#8221;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajax11212312333333333333333333333333333333333333333333333333333333333333333&#8243;;   unset($_SESSION[&#8216;b&#8217;]);   unset($_SESSION[&#8216;c&#8217;]);   unset($_SESSION[&#8216;d&#8217;]);   unset($_SESSION[&#8216;e&#8217;]);   unset($_SESSION[&#8216;f&#8217;]);   \/\/unset($_SESSION[&#8216;h&#8217;]);   \/\/unset($_SESSION[&#8216;i&#8217;]);   unset($_SESSION[&#8216;g&#8217;]);   var_dump($_SESSION);   \u590d\u5236\u4ee3\u7801   get.php   &nbsp;   &nbsp;   &lt;?php   &nbsp;   include &#8220;init.php&#8221;;   var_dump($_SESSION);   \u6700\u91cd\u8981\u7684\u662fcls_session.php   &nbsp;   session\u5b58\u5e93 \u6709\u5229\u4e8e\u7edf\u8ba1\u5f53\u524d\u7f51\u7ad9\u5728\u7ebf\u7528\u6237   &nbsp;   \u56e0\u4e3aecshop\u81f3\u59cb\u81f3\u7ec8\u6ca1\u7528session_start,session\u7684\u5b58\u53d6\u8fd8\u662f\u548c\u4ee5\u524d\u4e00\u6837\u76f4\u63a5\u64cd\u4f5c$_SESSION\u6570\u7ec4\uff0c\u6240\u4ee5\uff0c\u5982\u679c\u539f\u6765\u7684session\u662f\u5b58\u5728\u6587\u4ef6\u91cc,\u73b0\u5728\u53ef\u4ee5\u4e0d\u4fee\u6539\u4ee3\u7801\u7684\u4f7f\u7528\u8fd9\u79cd\u65b9\u5f0f   &nbsp;   &nbsp;  <\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5728\u505aecshop\u7684\u4e8c\u6b21\u5f00\u53d1\u8fc7\u7a0b\u4e2d&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4925],"tags":[],"class_list":["post-199468","post","type-post","status-publish","format-standard","hentry","category-4925"],"_links":{"self":[{"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/posts\/199468","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/comments?post=199468"}],"version-history":[{"count":0,"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/posts\/199468\/revisions"}],"wp:attachment":[{"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/media?parent=199468"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/categories?post=199468"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/tags?post=199468"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}