当前位置: 首页 > php>阅读正文

php会话技术,$_COOKIE、$_SESSION

2021.9.7 朱丰华 1024 次 留下评论 1634字

客户端与服务器会话,使用 COOKIE 和 SESSION 技术。

COOKIE技术

cookie是客户端会话技术,将数据保存到客户端。特点和作用:

  • 存储在客户端浏览器(所以不太安全)
  • 浏览器对cookie有限制
    • 单个cookie的大小(4kb)
    • 单个域名下cookie数量(20个)
  • 只能存放少量不敏感的数据
  • 在不登录的情况下,完成服务器对客户端的身份识别

创建cookie

setcookie(name, value, expire, path, domain);
  • name => cookie名
  • value => cookie值
  • expire => 过期时间,单位(秒)
  • path => 路径,默认/
  • domain => 域名,默认当前域名

注释:创建cookie应该位于html标签之前。

实例,创建一个名为user、值为zhangsan的cookie,有效期为3600秒

<?php
    setcookie('user','zhangsan',time()+3600)
?>

注释:在发送 cookie 时,cookie 的值会自动进行 URL 编码,在取回时进行自动解码(为防止 URL 编码,请使用 setrawcookie() 取而代之)。

获取cookie

使用$_COOKIE对象获取,例如获取名为 user 的cookie值

<?php
    echo $_COOKIE['user'];
?>

注释:cookie不能直接修改,再次创建同名cookie即可覆盖

删除cookie

重新设置同名cookie,并把它的生存时间,比当前时间少即可,那么它就表示过期了,会被删除。

例如,删除名为 user 的cookie

<?php
    setcookie('user','zhangsan2',time()-3600);
    echo $_COOKIE['user'];  // 不输出,验证已经删除
?>

使用 time()-任意正整数,表示把时间戳设置比当前时间小。

SESSION技术

session表示服务器会话技术,将数据保存到服务器。

不过,session会话信息是临时的,在用户离开网站后将被删除。如果您需要永久储存信息,可以把数据存储在数据库中。

Session 的工作机制是:为每个访问者创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,亦或通过 URL 进行传导。

开启session

在您把用户信息存储到 PHP session 中之前,首先必须启动会话。

注释:session_start() 函数必须位于 <html> 标签之前:

<?php session_start(); ?>

<html>
<body>

</body>
</html>

上面的代码会向服务器注册用户的会话,以便您可以开始保存用户信息,同时会为用户会话分配一个 UID。

存取session

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

<?php
session_start();
// store session data
$_SESSION['views']=1;
?>

<html>
<body>

<?php
//retrieve session data
echo "Pageviews=". $_SESSION['views'];  // Pageviews=1
?>

</body>
</html>

注释:session的生命周期随每个服务器设置不同而不同,如果需要设置时间,例如设置3600秒,即:$_SESSION[‘expiretime’] = time() + 3600;

终结 Session

如果您希望删除某些 session 数据,可以使用 unset() 或 session_destroy() 函数。

unset() 函数用于释放指定的 session 变量:

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

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

<?php
session_destroy();
?>

注释:session_destroy() 将重置 session,您将失去所有已存储的 session 数据。

本篇完,还有疑问?留下评论吧

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注