1.PHP
Session文件储存于服务器端,,默认情况下SESSION
当代码session_start();运行的时候,就在服务器上产生了一个session文件,随之也产生了与之唯一对应的一个session id,定义session变量以一定形式存储在刚才产生的session文件中。通过session id,可以取出定义的变量。跨页后,为了使用session,你必须又执行session_start();将又会产生一个session文件,与之对应产生相应的session id,用这个session id是取不出前面提到的第一个session文件中的变量的,因为这个session id不是打开它的“钥匙”。如果在session_start();之前加代码session_id($session id);将不产生新的session文件,直接读取与这个id对应的session文件。
2. Session常见函数及用法
2.1
这个函数没有参数,且返回值均为true。如果你使用基于cookie的session,那么在使用Session_start()之前浏览器不能有任何输出.可以在php.ini里启动session.auto_start=1,这样就无需每次使用session之前都要调用session_start()。但启用该选项也有一些限制,如果确实启用了
2.2
PHP5使用$_SESSION[‘xxx’]=xxx注册SESSION全局变量。注意
session_unregister
register_globle设为on,不过出于安全考虑,强烈建议关闭register_globle。
HTTP_SESSION_VARS也不提倡使用了,官方建议用$_SESSION代替之。
Page1.php
<?php
session_start();
$_SESSION[‘name’]=”我是黑旋风李逵!”;
$_SESSION[‘passwd’]=”mynameislikui”;
$_SESSION[‘time’]=time();
//如果客户端支持cookie,可通过该链接传递session到下一页。
echo '<br/><a href="page2.php">通过COOKIE传递SESSION</a>';
//if (navigator.cookieEnabled) {
// alert("你的浏览器支持cookie功能");
//} else {
// alert("你的浏览器不支持cookie"");
//}
//客户端不支持cookie时,使用该办法传递session.
echo '<br /><a href="page2.php?' . SID . '">通过URL传递SESSION</a>';
Page2.php
<?php
session_start();
echo $_SESSION['name'];
echo $_SESSION['passwd'];
echo date('Y m d H:i:s', $_SESSION['time']);
echo '<br /><a href="page1.php">返回上一页</a>';
?>
2.3
php5中既可以使用session_id(),也可以通过附加在url上的SID取得当前会话的session_id和session_name。
如果session_id()有具体指定值的话(即指定了参数$id),将取代当前的session_id值。使用该函数前必须启动会话:session_start();
例子:手动设置
<?php
session_start();
//
$lifeTime = 24 * 3600;
setcookie(session_name(), session_id(), time() + $lifeTime, "/");
?>
其实
<?php
//
$lifeTime = 24 * 3600;
session_set_cookie_params($lifeTime);
session_start();
$_SESSION["admin"] = true;
?>
如果客户端使用
2.4
isset($_SESSION[‘xxx’])来替代。
2.5更改session_id
<?php
session_start();
$old_sessionid = session_id();
session_regenerate_id();
$new_sessionid = session_id();
echo "原始
echo "新的
echo"<pre>";
print_r($_SESSION);
echo"</pre>";
?>
2.6
session改名示例:
<?php
$previous_name = session_name("WebsiteID");
echo "新的session名为:
?>