首先了解一下session的基本原理:
浏览器和服务器采用http无状态的通讯,为了保持客户端的状态,使用session来达到这个目的。在session机制中,采用了一个唯一的session_id来标示不同的用户,浏览器每次请求都会带上由服务器为它生成的session_id.
当客户端访问服务器时,服务器根据需求设置session,将会话信息保存在服务器上,同时将标示session的session_id传递给客户端浏览器,
浏览器将这个session_id保存在内存中(还有其他的存储方式,例如写在url中),我们称之为无过期时间的cookie。浏览器关闭后,这个cookie就清掉了,它不会存在用户的cookie临时文件。
以后浏览器每次请求都会额外加上这个参数值,再服务器根据这个session_id,就能取得客户端的数据状态。
作者准备使用session来进行用户登录状态的维持:
首先是一个静态登录页面login.html:
<span style="font-size:14px;"><form action="check.php" method="get">
<input type="text" name="username"/>
<input type="text" name="pass" />
<input type="submit" value="ok">
</form></span>
然后是验证登录页面check.php
<span style="font-size:14px;"><?php
Session_Start();
$_SESSION["name"]=$_GET["username"];
if(!session_is_registered("name")){ //判断当前会话变量是否注册
echo "未登录";
}else{
echo "欢迎".$_SESSION["name"];
}
?></span>
登出页面logout.php
<span style="font-size:14px;"><?php
session_start();
session_unset();
session_destroy();
?>
</span>
测试页面test.php:
<span style="font-size:14px;"><?php
session_start();
echo "登记的用户名为:".$_SESSION["name"];
?></span>
·多用户访问问题,采用两个浏览器模拟多用户同时登录,由于session采用唯一的用户id,所以不同的用户可以在session中使用相同的Key值,而不会冲突。