PHP 操作 Cookie 和 Session
Cookie是网站常用的一种存储数据的方式,Cookie虽然是保存在用户的浏览器端,但发送HTTP请求的时候也会一起传到服务器,所以后端也能很方便的操作Cookie,而且使用PHP操作Cookie要比Javascript方便。
Session也是一种存储数据的方式,不过Session的数据是存储在服务端,浏览器端只是存储一个Session的ID,关闭浏览器后Session也会被销毁,有点类似于浏览器端的sessionStorage。Session常用来存储用户的登录状态和购物车等。
操作Cookie
添加Cookie
添加Cookie可以使用 setcookie
函数,下面存储一个名为 username 的Cookie:
<?php
// 添加一个名为username的Cookie
setcookie('username', '123456', time() + 3600);
上面存储了一个名为username的Cookie,其中的 username
就是Cookie的名称,123456
就是要存储的Cookie值,time() + 3600
就是Cookie的过期时间,time()
是获取当前的Unix时间戳,后面的 + 3600
就是在当前时间戳上 + 3600秒,也就是一个小时后过期。下面是 setcookie
函数的详细参数说明:
参数 | 类型 | 说明 |
---|---|---|
name | string | Cookie名称。 |
value | string | Cookie值。 |
expire | int | Cookie的过期时间,使用UNIX时间戳。 |
path | string | Cookie 有效的服务器路径。 设置成 '/' 时,Cookie 对整个域名 domain 有效。 如果设置成 '/foo/', Cookie 仅仅对 domain 中 /foo/ 目录及其子目录有效(比如 /foo/bar/)。 默认值是设置 Cookie 时的当前目录。 |
domain | string | 域名,如果设置为主域名 主域名和二级域名都有效,如果设置为二级域名只有设置的域名和旗下的域名有效。 |
secure | bool | 只有HTTPS连接才发送Cookie,默认为 false。 |
httponly | bool | Cookie只能通过HTTP协议访问,也就是无法通过Javascript访问,默认为false。 |
访问Cookie
要获取Cookie可以访问 $_COOKIE
全局数组,下面输出保存的username:
<?php
// 输出username的Cookie
echo $_COOKIE['username'];
修改Cookie
修改Cookie只需要重新添加一个重名的Cookie覆盖之前的Cookie即可,例如我存储了一个username=123456的Cookie,我想把Cookie值改为abc:
<?php
// 把username的Cookie值改为abc
setcookie('username', 'abc', time() * 3600);
删除Cookie
删除Cookie也很简单,重新添加一个同名的Cookie,把过期时间设置为比当前更早的时间,下面删除username的Cookie:
<?php
// 把username的Cookie值改为abc
setcookie('username', '', time() - 1);
这里把过期时间设置为了当前时间 - 1秒。
操作Session
添加Session
添加Session可以直接给 $_SESSION
全局变量添加内容,不过在使用Session前还需要先启动Session,启动Session的函数是 session_start()
,下面添加一个名为 username 的Session:
<?php
// 启动session
session_start();
// 存储username
$_SESSION['username'] = '123';
在操作 $_SESSION
之前都需要启动Session。
访问Session
访问Session也是直接访问 $_SESSION
,如下:
<?php
// 启动session
session_start();
// 输出username
echo $_SESSION['username'];
修改和删除Session
修改也是一样的修改 $_SESSION
,因为比较简单,所以就不掩饰了。
删除也只需要删除 $_SESSION
即可,如下:
<?php
// 启动session
session_start();
// 删除username
unset($_SESSION['username']);
如果要释放所有Session变量可以使用 session_unset()
。
其他Session相关
注意!如果一个页面或关联的几个页面出现多次 $_SESSION
也只需要启动一次Session,如果要判断session是否启动可以使用 isset()
函数来判断 $_SESSION
是否存在,如下:
<?php
// 判断Session是否启动
if (!isset($_SESSION)) {
// 如果未启动就启动session
session_start();
}
或者也可以使用 session_status()
函数来判断Session是否启动,启动会返回 2 ,未启动会返回 1 ,如下:
<?php
// 判断Session状态
if (session_status() == 1) {
// 启动Session
session_start();
}
以上就是PHP比较简单的操作Cookie和Session,更复杂的会话管理以后再写。
版权声明:本文为原创文章,版权归 Mr. Ma's Blog 所有,转载请联系博主获得授权。
本文地址:https://www.misterma.com/archives/612/
如果对本文有什么问题或疑问都可以在评论区留言,我看到后会尽量解答。