PHP学习2 — PHP Cookie 与 Session

时间:2023-03-09 16:54:48
PHP学习2 — PHP Cookie 与 Session

PHP Cookies

cookie 常用于识别用户。cookie 是服务器留在用户计算机中的小文件。每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。

创建cookie:setcookie(name, value, expire, path, domain);

setcookie() 函数必须位于 <html> 标签之前。

在发送 cookie 时,cookie 的值会自动进行 URL 编码,在取回时进行自动解码

取回cookie: $_COOKIE 变量用于取回 cookie 的值。

 <?php
// Print a cookie
echo $_COOKIE["user"]; // A way to view all cookies
print_r($_COOKIE);
?>

判断是否设置cookies:isset() 函数

 <?php
if (isset($_COOKIE["user"]))
echo "Welcome " . $_COOKIE["user"] . "!<br />";
else
echo "Welcome guest!<br />";
?>

删除cookie:使过期日期变更为过去的时间点。

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

PHP Sessions

PHP session 变量用于存储有关用户会话的信息,或更改用户会话的设置。Session 变量保存的信息是单一用户的,并且可供应用程序中的所有页面使用。

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

开始 PHP Session: session_start() 函数

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

存储和取回 session 变量:使用 PHP $_SESSION 变量

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

检测Session变量:isset();

删除session:unset() 函数用于释放指定的 session 变量,session_destroy() 函数彻底终结 session.

 <?php
unset($_SESSION['views']); //释放session变量view
session_destroy(); //彻底终结session
?>

php cookie与 session区别

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。

2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session。

3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用COOKIE。

4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

5、将登陆信息等重要信息存放为SESSION,其他信息如果需要保留,可以放在COOKIE中(如用户名)把一些敏感的东西存到session中,不太敏感的东西可以存在session或者Cookie中,但是session有的时候在服务器中容易丢失,所以我们可以结合cookie一起使用,就是说当session的丢失的时候,如果cookie还在我们设定的有效期内,就可以再一次从Cookie中取出值放进session里,所以我们最好同时用session和cookie保存用户名等信息或者在配置文件里。

(*整理自W3School)