php之Cookies和Sessions

发布时间 2023-10-09 17:51:14作者: songxia777

PHP Cookies

  • cookie 常用于识别用户
  • cookie 是服务器留在用户计算机中的小文件。每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie。
  • 通过 PHP,您能够创建并取回 cookie 的值
  • setcookie() 函数用于设置 cookie。
  • setcookie() 函数必须位于 标签之前。
  • 在发送 cookie 时,cookie 的值会自动进行 URL 编码,在取回时进行自动解码(为防止 URL 编码,请使用 setrawcookie() 取而代之)。
语法:
setcookie(name, value, expire, path, domain);

例子:
<?php 
setcookie("user", "Alex Porter", time()+3600);
?>

<html>
<body>

</body>
</html>
  • PHP 的 $_COOKIE 变量用于取回 cookie 的值
<?php
// Print a cookie
echo $_COOKIE["user"]; //获取指定name的cookie值

// A way to view all cookies
print_r($_COOKIE); //获取所有cookie值
?>
  • 当删除 cookie 时,您应当使 过期日期 变更为 过去的时间点
<?php 
// set the expiration date to one hour ago
setcookie("user", "", time()-3600);
?>

PHP Sessions

  • PHP session 变量用于存储有关 用户会话 的信息,或更改用户会话的设置。
  • 不过,会话信息是临时的,在用户离开网站后将被删除,如果您需要永久储存信息,可以把数据存储在数据库中
  • Session 变量保存的信息是单一用户的,并且可供应用程序中的所有页面使用
  • Session 的工作机制是:为每个访问者创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,亦或通过 URL 进行传导。

1. 开始 PHP Session

  • 在您把用户信息存储到 PHP session 中之前,首先必须启动会话。
  • session_start() 函数必须位于 标签之前
下面的代码 会向服务器注册用户的会话,以便您可以开始保存用户信息,同时会为用户会话分配一个 UID

<?php session_start(); ?>

<html>
<body>

</body>
</html>

2. 存储 Session 变量

  • 存储和取回 session 变量的正确方法是使用 PHP $_SESSION 变量
<?php
session_start(); // 1. 开启会话
// store session data
$_SESSION['views']=1; // 2. 存储session变量
?>

<html>
<body>

<?php
//retrieve session data
echo "Pageviews=". $_SESSION['views'];  // 3. 获取session变量
?>

</body>
</html>

3. 终结 Session

  • 如果您希望删除某些 session 数据,可以使用 unset() 或 session_destroy() 函数。
  • unset() 函数用于释放指定的 session 变量
  • session_destroy() 将重置 session,您将失去所有已存储的 session 数据
<?php
     unset($_SESSION['views']);
     
     // session_destroy() 函数彻底终结 session
     session_destroy();
?>