1. 什么是会话控制?
HTTP协议没有一个内建的机制来维护两个事务之间的状态。当一个用户在请求一个页面后再
请求另一个页面时,HTTP无法告知这两个请求是来自同一个用户。会话控制的思想是指能够在网
站中根据一个会话跟踪用户。如果可以做到这一点就可以很容易的做到对用户登录的支持,并根据
其授权级别和个人喜好显示相应的内容。我们可以根据会话控制记录该用户的行为,还可以实现购
物车。
2. 基本的会话功能
PHP的会话是通过唯一的会话ID来驱动的,会话ID是一个加密的随机数字。它由PHP生成,在
会话的生命周期中都会保存在客户端。它可以保存在用户机器的cookie中,或者通过URL在网络上
传递。
会话ID就像一把钥匙,允许我们注册一些特定的变量,也称为会话变量。这些变量的内容保存在
服务器端。会话ID是客户端唯一可见的信息。如果在一次特定的网站连接中,客户端可以通过cookie
或URL看到会话ID,那我们就可以访问该会话保存在服务器上的会话变量。
3. 什么是cookie
cookie是一小段信息,它可以由脚本在客户端机器保存。可以通过发送一个包含特定数据并且具有
如下格式的HTTP标题头,从而在用户机器设置一个cookie:
Set-Cookie: NAME = VALUE; [expires = DATE;] [path = PATH;]
[domain = DOMAIN_NAME;] [secure]
当浏览器连接一个URL时,首先要搜索当地保存的cookie,如果有任何与正在连接的URL相关的cookie
,浏览器将其提交到服务器。
cookie的作用:当你浏览某网站时,网站存储在你机器上的一个小文本文件,它记录了你的用户ID,密码
浏览过的网页,停留的时间等信息,当你再次来到该网站时,网站通过读取Cookie,得知你的相关信息,就
可以作出相应的动作,如在页面显示欢迎你的标语,或者不用输入ID,密码就可以直接登录等。
4. 通过PHP设置cookie
可以通过使用setcookie()函数在PHP中手动设置cookie。该函数原型如下所示:
bool setcookie(string name[,string value [, int expire [, string path[, string domain [, int secure]]]]]);
如果通过如下方式设置一个cookie:
setcookie('mycookie', 'value');
当用户访问站点中的下一页(或者重载当前页时),可以通过名为$_COOKIE['mycookie']来实现。
5. 简单会话例子
page1.php ---启动一个会话并注册一个变量
<?php
session_start();
$_SESSION['sess_var'] = “Hello, world!";
echo'The content of $_SESSION[/'sess_var/'] is .$_SESSION['sess_var'].' <br/>;
?>
<a href = "page2.php"> Next page</a>
page2.php ---访问一个会话变量并注销它
<?php
session_start();
echo "The content of $_SESSION[/'sess_var/'] is ' .$_SESSION['sess_var']. '<br/>;
unset($_SESSION['sess_var'];
?>
<a href = page3.php"> Next Page </a>
page3.php ---结束会话
<?php
session_start();
echo 'The content of $_SESSION[/'sess_var/'] is .$_SESSION['sess_var']. ' <br/>';
session_destroy();
?>