php session 自定义到数据库,php 下将session保存到数据库中的方法

php 下将session保存到数据库中的方法

发布于 2014-10-04 08:37:29 | 72 次阅读 | 评论: 0 | 来源: 网友投递

PHP开源脚本语言PHP(外文名: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,入门门槛较低,易于学习,使用广泛,主要适用于Web开发领域。PHP的文件后缀名为php。

本文是一个php下可以把session保存到数据库中的方法实现,定义了一些常用以的操作,包括读取session,销毁session等,感兴趣的同学参考下.

user-define-session-inc.php文件代码:

function mysession_open($save_path, $session_name)

{

@mysql_connect("localhost", "root","1981427") //选择数据库之前需要先连接数据库服务器

or die("数据库服务器连接失败");

@mysql_select_db("test") //选择数据库mydb

or die("数据库不存在或不可用");

return true;

}

function mysession_close()

{

return true;

}

function mysession_read($key)

{

@mysql_connect("localhost", "root","1981427") //选择数据库之前需要先连接数据库服务器

or die("数据库服务器连接失败");

@mysql_select_db("test") //选择数据库mydb

or die("数据库不存在或不可用");

$expiry_time = time(); //获取Session失效时间

//执行SQL语句获得Session的值

$query = @mysql_query("select session_data from mysession "

."where session_key = '$key' and session_expiry > $expiry_time")

or die("SQL语句执行失败");

if($row = mysql_fetch_array($query))

return $row['session_data'];

else

return false;

}

function mysession_write($key, $data)

{

@mysql_connect("localhost", "root","1981427") //选择数据库之前需要先连接数据库服务器

or die("数据库服务器连接失败");

@mysql_select_db("test") //选择数据库mydb

or die("数据库不存在或不可用");

$expiry_time = time() + 1200; //获取Session失效时间

//查询Session的键值是否已经存在

$query = @mysql_query("select session_data from mysession "

."where session_key = '$key'")

or die("SQL语句执行失败");

//如果不存在,则执行插入操作,否则执行更新操作

if(mysql_numrows($query) == 0)

{

//执行SQL语句插入Session的值

$query = @mysql_query("insert into mysession values('$key', '$data', $expiry_time)")

or die("SQL语句执行失败");

}

else

{

//执行SQL语句更新Session的值

$query = @mysql_query("update mysession set "

."session_data = '$data', session_expiry = $expiry_time "

."where session_key = '$key'")

or die("SQL语句执行失败");

}

return $query;

}

function mysession_destroy($key)

{

@mysql_connect("localhost", "root","1981427") //选择数据库之前需要先连接数据库服务器

or die("数据库服务器连接失败");

@mysql_select_db("test") //选择数据库mydb

or die("数据库不存在或不可用");

//执行SQL语句删除Session

$query = @mysql_query("delete from mysession where session_key = '$key'")

or die("SQL语句执行失败");

return $query;

}

function mysession_gc($expiry_time)

{

@mysql_connect("localhost", "root","1981427") //选择数据库之前需要先连接数据库服务器

or die("数据库服务器连接失败");

@mysql_select_db("test") //选择数据库mydb

or die("数据库不存在或不可用");

$expiry_time = time();

//执行SQL语句删除Session

$query = @mysql_query("delete from mysession where session_expiry < $expiry_time")

or die("SQL语句执行失败");

return $query;

}

//设置用户自定义Session存储

session_set_save_handler('mysession_open',

'mysession_close',

'mysession_read',

'mysession_write',

'mysession_destroy',

'mysession_gc');

?>

include('user-define-session-inc.php'); //包含session_set_save_handler定义的文件

session_start();

$_SESSION['username'] = "zhuzhao";

$_SESSION['password'] = "123456";

?>

include('user-define-session-inc.php'); //包含session_set_save_handler定义的文件

session_start();

echo "UserName:".$_SESSION['username']."
";

echo "PassWord:".$_SESSION['password']."
";

?>

相关阅读:

php 下将session保存到数据库中的方法

php中将数组转成字符串并保存到数据库中的代码示例

php查询mysql数据库并将结果保存到数组的方法

php读取csv数据保存到数组的方法

将PHP的session数据存储到数据库中的代码实例

Session保存到数据库的php类

PHP如何将log信息写入服务器中的log文件

PHP下利用header()函数设置浏览器缓存的方法

PHP 多服务器session共享之NFS共享的方法

php中使用session_set_save_handler()函数把session保存到MySQL数据库实例

php获取目录所有文件并将结果保存到数组中的示例代码

php下将图片以二进制存入mysql数据库中并显示的实现方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用 PHP 创建会话并将其存储地点设置为数据库的步骤如下: 1. 在 PHP 代码使用 `session_set_save_handler` 函数来设置会话的存储处理程序。这个函数接受四个自定义函数,分别用于打开、关闭、读取、写入和删除会话数据。你需要在这些函数编写代码来将会话数据存储到数据库。 2. 使用 `session_start` 函数来启动会话。这会打开一个会话并生成一个唯一的会话 ID。 3. 使用 `session_set_cookie_params` 函数来设置会话的有效期。这个函数接受四个参数:会话的有效期(以秒为单位)、会话 cookie 的路径、会话 cookie 的域名和是否使用安全协议(https)。 例如,下面的代码演示了如何设置会话的有效期为 60 秒: ``` <?php // 设置会话的有效期为 60 秒 session_set_cookie_params(60); // 启动会话 session_start(); // 设置会话变量 $_SESSION['foo'] = 'bar'; ``` 请注意,在设置会话的有效期之前,必须先启动会话。 ### 回答2: 在PHP创建session并设置有效期为60秒,可以按照以下步骤进行操作: 1. 首先,需要在页面的顶部使用session_start()函数来开启session功能。 2. 然后,可以使用$_SESSION超全局变量来存储和传递session数据。 3. 要设置session的有效期为60秒,可以使用ini_set()函数来更改session的过期时间。具体代码如下: ```php ini_set('session.gc_maxlifetime', 60); session_set_cookie_params(60); ``` 4. 接下来,可以将session存储到数据库。首先,需要创建一个数据库表来存储session数据。可以根据需要创建一个具有以下字段的表: - session_id:用于存储session的唯一标识符。 - session_data:用于存储session的数据。 - session_expiry:用于存储session的过期时间。 5. 在连接到数据库之后,可以使用以下代码将session存储到数据库: ```php $session_data = $_SESSION; // 获取session数据 $session_id = session_id(); // 获取session的唯一标识符 $session_expiry = time() + 60; // 设置session的过期时间为60秒 // 将session数据插入到数据库 $query = "INSERT INTO session_table (session_id, session_data, session_expiry) VALUES ('$session_id', '$session_data', '$session_expiry')"; // 执行插入操作 ``` 这样,就可以创建一个在服务器端保存session数据并设置有效期为60秒的php脚本,并将session存储到数据库。需要注意的是,上述代码只是示例,具体操作还需要根据实际情况做相应的修改和改进。 ### 回答3: 在PHP创建session并设置有效期为60秒,并将session存储到数据库,可以按照以下步骤进行操作: 1. 首先,需要开启session功能。在PHP代码的文件开头或初始化脚本加入session_start()函数来开启session。 2. 通过$_SESSION超全局数组来存储session数据。可以向$_SESSION数组添加键值对来存储需要的数据。 3. 接下来,需要设置session的过期时间为60秒。可以使用session_set_cookie_params()函数来设置session的过期时间。代码如下: ``` session_set_cookie_params(60); ``` 此代码将设置cookie的过期时间为60秒。 4. 然后,将session数据存储到数据库。首先,需要创建一个数据库表来存储session数据。可以根据需要创建一个包含session_id、session_data和expiration_time字段的表。接着,在PHP代码的文件开头或初始化脚本加入如下代码来设置session的存储方式为数据库: ``` ini_set("session.save_handler", "user"); // 设置session的存储方式为user ini_set("session.save_path", "mysql:host=localhost;dbname=test"); // 设置数据库连接信息 ``` 其,"localhost"是数据库服务器地址,"test"是数据库名,根据实际情况修改。 5. 最后,需要创建一个自定义session处理程序来存储session数据到数据库。可以使用session_set_save_handler()函数来创建自定义session处理程序。代码如下: ``` class CustomSessionHandler implements SessionHandlerInterface { // 实现SessionHandlerInterface接口的方法 // ... // 自定义方法,在session开始时存储数据到数据库 public function open($savePath, $sessionName) { // 连接数据库 // ... // 执行插入操作,将session_id、session_data和expiration_time插入到数据库 // ... } // 自定义方法,在session结束时从数据库删除数据 public function close() { // 连接数据库 // ... // 执行删除操作,根据session_id从数据库删除对应的数据 // ... } } $handler = new CustomSessionHandler(); session_set_save_handler($handler, true); ``` 在上述代码,CustomSessionHandler类实现了SessionHandlerInterface接口,并重写了open()和close()方法来实现数据库存储。 通过以上步骤,PHP会在session开启时自动将session数据存储到数据库,并且设置了60秒的有效期。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值