PHP中的会话管理Cookie和Session

黑灯舞 10年前

会话管理是web开发的一项重要内容,包括Session和Cookie两种技术。本章介绍Cookie和Session的创建和使用。

Cookie:

cookie 常用于识别用户。cookie 是服务器留在用户计算机中的小文件。每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie。通过 PHP能够创建并取回 cookie 的值。cookie 只能读取所在域,单一域不能超过20个cookie,每个cookie文件长度上限位4k字节,浏览器最多储存300个cookie。

cookie的创建:

setcookie() 函数用于设置 cookie。注意:setcookie() 函数必须位于 <html> 标签之前。

语法:

/**  * name:必需。规定 cookie 的名称。  * value:必需。规定 cookie 的值。  * expire:可选。规定 cookie 的有效期。  * path:可选。规定 cookie 的服务器路径。  * domain:可选。规定 cookie 的域名。  * secure:可选。规定是否通过安全的 HTTPS 连接来传输 cookie。  */  setcookie(name,value,expire,path,domain,secure)

注释:在发送cookie时,cookie的值会自动进行URL编码。接收时会进行URL解码。

例子:
1.设置并发送 cookie:

<?php  $value = "my cookie value";    // 发送一个简单的 cookie  //cookie24小时过期  setcookie("TestCookie", $value, time()+3600*24);  ?>    <html>  <body>  ...  ...

2.检索出 cookie 值的不同方法:

<html>  <body>    <?php    // 输出个别的 cookie  echo $_COOKIE["TestCookie"];  echo "<br />";  echo $HTTP_COOKIE_VARS["TestCookie"];  echo "<br />";    // 输出所有 cookie  print_r($_COOKIE);  ?>    </body>  </html>

3.输出

my cookie value  my cookie value  Array ([TestCookie] => my cookie value)

4.删除 cookie
通过把失效日期设置为过去的日期/时间,删除一个 cookie:

<?php  // set the expiration date to one hour ago  setcookie("TestCookie", "", time()-3600);  ?>

Session:

PHP session 变量用于存储有关用户会话的信息,或更改用户会话的设置。Session 变量保存的信息是单一用户的,并且可供应用程序中的所有页面使用。Session 的工作机制是:为每个访问者创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,亦或通过 URL 进行传导。

session的创建:

在您把用户信息存储到 PHP session 中之前,首先必须启动会话。session_start() 函数必须位于 <html> 标签之前。

语法:

session_start();

例子:

1.开始session

<?php session_start(); ?>    <html>  <body>    </body>  </html>

2.存储 session 变量
存储和取回 session 变量的正确方法是使用 $_SESSION 变量:

<?php  session_start();  // store session data  $_SESSION['views']=1;  ?>    <html>  <body>    <?php  //retrieve session data  echo "Pageviews=". $_SESSION['views'];  ?>    </body>  </html>

3.输出

Pageviews=1

4.终结 session
如果您希望删除某些 session 数据,可以使用 unset() 或 session_destroy() 函数。
unset() 函数用于释放指定的 session 变量:

<?php  unset($_SESSION['views']);  ?>

您也可以通过 session_destroy() 函数彻底终结 session:

<?php  session_destroy();  ?>

转载:PHP中的会话管理Cookie和Session【原创】