CREATE TABLE `session` ( `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, `sess_id` varchar(40) NOT NULL DEFAULT '', `data` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=138 DEFAULT CHARSET=utf8;
<?php $con =mysql_connect("127.0.0.1","root" , "root"); mysql_select_db("session"); function open($save_path, $session_name) { echo 1; return(true); } function close() {echo 5; return(true); } function read($id) { echo 2; if($result = mysql_query("SELECT * FROM session WHERE id='$id'")) { if($row = mysql_fetch_row($result )) { return $row["data"]; } } else { return ""; } } function write($id, $sess_data) {echo 3; if($result = mysql_query("UPDATE session SET data='$sess_data' WHERE id='$id'")) { return true; } else { return false; } } function destroy($id) {echo 4; if($result = mysql_query("DELETE * FROM session WHERE id='$id'")) { return true; } else { return false; } } /********************************************* * WARNING - You will need to implement some * * sort of garbage collection routine here. * *********************************************/ function gc($maxlifetime) { return true; } session_set_save_handler("open", "close", "read", "write", "destroy", "gc"); session_start(); // proceed to use sessions normally ?>
上方的代码,执行流程是:open( ) --->read( ) --->write( )--->close( )
现在我们的工作就已经完成了,只要你在需要在使用session的时候,把session_user_start.php。
包含进来,注意,这个文件一定要在文件的第一行包含,然后就想使用文件的session一样的方法使用就可以了。
这里总结一点:
下方代码是引用文件,然后赋值;可是当key是数字时,会发生很奇怪的事情。就是值丢失了。。。
报错信息如下:
<?php include "./session.php"; //session_start(); $_SESSION['1515'] = "4546"; print_r($_SESSION);DIE;
<?php $con =mysql_connect("127.0.0.1","root" , "root") or die("链接失败mysql_error()"); mysql_select_db("test"); function open($save_path, $session_name) { //echo $save_path,$session_name; return(true); } function close() { return(true); } function read($id) { //echo $id; if($result = mysql_query("SELECT * FROM session WHERE id='$id'")) { if($row = mysql_fetch_row($result )) { return $row["data"]; } } else { return ""; } } function write($id, $sess_data) { //echo $id,$sess_data; $sql = "insert into session SET data='$sess_data', sess_id='$id'"; if($result = mysql_query($sql)) { echo "ok"; return true; } else { return false; } print_r($result);die; } function destroy($id) { if($result = mysql_query("DELETE * FROM session WHERE id='$id'")) { return true; } else { return false; } } /********************************************* * WARNING - You will need to implement some * * sort of garbage collection routine here. * *********************************************/ function gc($maxlifetime) { return true; } session_set_save_handler("open", "close", "read", "write", "destroy", "gc"); session_start(); // proceed to use sessions normally ?>