php session 保存时效,PHP SESSION生存时间设置

但是为了方便,我们需要知道服务器设置的“session.name”,但是一般用户都没有权限查看服务器的php.ini设置,不过PHP提供了一个非常好的函数“phpinfo”,利用这个可以查看几乎所有的PHP信息!

------------------------------------------------------------------------------------

PHP相关信息显示

------------------------------------------------------------------------------------

打开编辑器,输入上面的代码,然后在浏览器中运行这个程序,会见到PHP的相关信息(如图1所示)。其中有一项“session.name”的参数,这个就是我们需要的服务器“session.name”,一般是“PHPSESSID”。

记下了SessionID的名称后,我们就可以实现永久的Session数据储存了!

复制代码 代码如下:

session_start();

ini_set('session.save_path','/tmp/');

//6个钟头

ini_set('session.gc_maxlifetime',21600);

//保存一天

$lifeTime = 24 * 3600;

setcookie(session_name(), session_id(), time() + $lifeTime,

"/");

后记:

其实真正的永久储存是不可能的,因为Cookie的保存时间有限,而服务器的空间也有限……但是对于一些需要保存时间比较长的站点,以上方法就已经足够了!

把session放入mysql的Example:

数据库里建表:session ( sesskey varchar32 , expiry int11 , value

longtext)

code:

代码执行前已经连接数据库了。

复制代码 代码如下:

define('STORE_SESSIONS','mysql');

if (STORE_SESSIONS == 'mysql') {

if (!$SESS_LIFE = get_cfg_var('session.gc_maxlifetime')) {

$SESS_LIFE = 1440;

}

function _sess_open($save_path, $session_name) {

// 如果没有连接数据库,可以在此执行mysql_pconnect,mysql_select_db

return true;

}

function _sess_close() {

return true;

}

function _sess_read($key) {

$value_query = mysql_query("select value from sessions where

sesskey = '" .addslashes($key) . "' and expiry > '"

. time() . "'");

$value = mysql_fetch_array($value_query);

if (isset($value['value'])) {

return $value['value'];

}

return false;

}

function _sess_write($key, $val) {

global $SESS_LIFE;

$expiry = time() + $SESS_LIFE;

$value = $val;

$check_query = mysql_query("select count(*) as total from sessions

where sesskey = '" . addslashes($key) . "'");

$check = mysql_fetch_array($check_query);

if ($check['total'] > 0) {

return mysql_query("update sessions set expiry = '" .

addslashes($expiry) . "', value = '" . addslashes($value) . "'

where sesskey = '" . addslashes($key) . "'");

} else {

return mysql_query("insert into sessions values ('" .

addslashes($key) . "', '" . addslashes($expiry) . "', '" .

addslashes($value) . "')");

}

}

function _sess_destroy($key) {

return mysql_query("delete from sessions where sesskey = '" .

addslashes($key) . "'");

}

function _sess_gc($maxlifetime) {

mysql_query("delete from sessions where expiry < '"

. time() . "'");

return true;

}

session_set_save_handler('_sess_open', '_sess_close', '_sess_read',

'_sess_write', '_sess_destroy', '_sess_gc');

}

danoo_session_name( 'dtvSid' );

danoo_session_save_path(SESSION_WRITE_DIRECTORY);

还是有点不明白,open,write那些参数哪里来的。

修改php.ini配置的两个常用函数:

get_cfg_var('session.gc_maxlifetime') :

取得session.gc_maxlifetime的值

ini_set('session.cookie_lifetime','0') :

设置session.cookie_lifetime的值为0。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值