您的位置:首页 > 其它

session_set_save_handler()用法

2014-07-03 23:29 537 查看
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;


下方为为了插入库,改过session.php文件

<?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
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: