|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
一些真正的强人总会搞出新玩意来丢给你,你不学就落后了,也印证了前人的经验,果然是学无止境啊!session|函数 在PHP下,关于session的会商良多,其其实PHP4中还有几个函数是咱们平常没有注重到的。
上面我把它们引见给人人吧。
个中的session_set_save_handler()可真是个好器材。
//********************
session_unset (PHP4 >= 4.0b4)
void session_unset(void);
这个函数可以把固然注册的一切的session变量置为空。注重它不是unregister,也分歧于destroy。
上面这个例子,对此函数做了很好的申明。
<?php
session_register(''a'',''b'',''c''); //auto-session-start
$a=1;
$b=2;
$c=3;
session_unregister(''a''); //unregistrered $a
echo "A: $a - reg:".session_is_registered(''a'')."
"; // but the global $a remains
session_unset(); // unsets $b und $c
echo "B:$b - reg:".session_is_registered(''b'')."
"; // the registration remains !
echo "C:$c - reg:".session_is_registered(''c'')."
";
echo session_encode();
?>
输入:
A: 1 - reg:
B: - reg:1
C: - reg:1
!b|!c|
//********************************
session_get_cookie_params (PHP4 >= 4.0RC2)
array session_get_cookie_params (void);
前往一个数组,纪录了以后session的cookie的一些信息。
有:
"lifetime" - cookie的保存期。
"path" - cookie的保留途径。
"domain" - cookie的域。
//*******************************
session_set_cookie_params (PHP4 >= 4.0b4)
void session_set_cookie_params (int lifetime [, string path [, string domain]])
设置session的cookie的一些参参数,相似于php.ini中的设置,但本函数所作的设置,只对以后剧本文件无效。
//*******************************
上面要引见的这个函数应是对人人都很有效的,你是否是对自界说一个不必cookie来保留的session有乐趣呢?这个函数就能够完成你如许的假想。
让我想一想,假如不必cookie的优点是甚么?最少一点,你不必忧虑客户真个的cookie的功效是不是翻开了,对吧。
session_set_save_handler (PHP4 >= 4.0b4)
void session_set_save_handler (string open, string close, string read, string write, string destroy, string gc)
这个函数可以界说用户级的session的保留函数(翻开、封闭、写入等)。
好比,咱们想把session保留在当地的一个数据库中时,本函数就很有效了。
!!!注重:利用本函数前,先要设置装备摆设php.ini文件,session.save_hadler=user ,不然,session_set_save_handler()不会失效。
另外,依据我的测试,你假如想让如许的session跨页面利用,还要在每个用到session的剧本文件中到场你自定的函数及session_set_save_handler,所以,最好的办法是做成一个独自的文件,在每个要用到session的剧本顶用include来包括出去。
上面这个例子供应了一个最根基的session保留法,相似于默许的files办法。
假如你想用数据库来完成,这也是很轻易做到的。
Example 1. session_set_save_handler() example
<?php
function open ($save_path, $session_name) {
global $sess_save_path, $sess_session_name;
$sess_save_path = $save_path;
$sess_session_name = $session_name;
return(true);
}
function close() {
return(true);
}
function read ($id) {
global $sess_save_path, $sess_session_name;
$sess_file = "$sess_save_path/sess_$id";
if ($fp = @fopen($sess_file, "r")) {
$sess_data = fread($fp, filesize($sess_file));
return($sess_data);
} else {
return("");
}
}
function write ($id, $sess_data) {
global $sess_save_path, $sess_session_name;
$sess_file = "$sess_save_path/sess_$id";
if ($fp = @fopen($sess_file, "w")) {
return(fwrite($fp, $sess_data));
} else {
return(false);
}
}
function destroy ($id) {
global $sess_save_path, $sess_session_name;
$sess_file = "$sess_save_path/sess_$id";
return(@unlink($sess_file));
}
/*********************************************
* 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
// 如今你就能够象平常一样地利用session了。
?>
//***************************************
session_cache_limiter (PHP4 CVS only)
string session_cache_limiter ([string cache_limiter])
本函数可以设置或获得session.cache_limiter的值。
在php.ini中也能够做一样的设置。其值有 nocache,public,private。
本函数是经由过程HTTP的header发送到客户真个。假如为nocache,将制止任何客户真个cache。而public将答应cache,然而private绝对public而言,更加平安一点。
缺省值是在php.ini中的设置,假如你要利用它,必需在每次挪用session_start()之前挪用本函数。
此函数如今只能在CVS形式下运转,然而PHP4.0.3将撑持它。
Example 1. session_cache_limiter() examples
<?php
# set the cache limiter to ''private''
session_cache_limiter(''private);
$cache_limiter = session_cache_limiter();
echo "The cache limiter is now set to $cache_limiter<p>";
?>
//*****************************
模仿的不光是模仿,模仿的同时在加改进,就成了自己的作品了。 |
|