前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >简明PHP进阶【8-Cookie和Session】

简明PHP进阶【8-Cookie和Session】

作者头像
Lemon黄
发布2019-10-08 17:49:16
8420
发布2019-10-08 17:49:16
举报
文章被收录于专栏:Lemon黄

名人之声

所谓科学的论辩,从总体上来说则是没有多大效果的,更不用说论辩几乎总是各持己见的这个事实。

——弗洛伊德

在PHP中,Cookie和会话控制(Session)是很重要的编程内容,今天我们就来简单介绍介绍它们。

Cookie 是在 HTTP 协议下,服务器或脚本可以维护客户工作站上信息的一种方式。Cookie 是由 Web 服务器保存在用户浏览器(客户端)上的小文本文件,它可以包含有关用户的信息。无论何时用户链接到服务器,Web 站点都可以访问 Cookie 信息。

Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web页时,如果该用户还没有会话,则Web服务器将自动创建一个 Session对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在Session对象中。

1 设置Cookie

在PHP中设置Cookie,使用函数setcookie()。函数的语法格式如下:

代码语言:javascript
复制
bool setcookie(string name[,string value[,int expire[,string path[,string domain[,int secure]]]]]);

如下函数的参数说明:

  • name:Cookie的名字
  • value:Cookie的值
  • expire:Cookie的过期时间
  • path:Cookie在服务器端的有效路径
  • domain:Cookie有效的域名
  • source:指明Cookie是否通过安全的HTTPS

如下示例代码:

代码语言:javascript
复制
<html>
<body>
<?php
$test="PHP Cookie测试!";
setcookie("test",$test);
echo $_COOKIE['test'];
?>
</body>
</html>

通过$_COOKIE预定义变量来访问Cookie的值,在浏览器下的运行结果如下:输出cookie的值,并且浏览器中也保存了该cookie

2 删除Cookie

在有效内设置 的Cookie都会一直存在。只要是通过这台机器登录服务器的,本机上的Cookie信息随时都可以调用。出于安全的考虑,大多数用户不希望保存Cookie,所以可以手动删除掉Cookie。删除Cookie最好的办法是使用setcookie函数设置过期时间。

代码语言:javascript
复制
<?php
$test="过期时间";
setcookie("test",$test);
setcookie("test",$test,time()+1800); //0.5小时失效
?>

也可以通过以下的方式来达到删除Cookie,即过期时间赋予负数

代码语言:javascript
复制
<?php
setcookie("test","",time()-3600); //删除Cookie
?>

然后我们就可以判断Cookie是否为空(empty($_COOKIE['test'])),如果为空则表示已经删除。

3 Cookie数组

保存数组形式的Cookie,可以使用如下格式:

代码语言:javascript
复制
setcookie("Cookie_name[1]","Cookie_value1");
setcookie("Cookie_name[2]","Cookie_value2");

当需要获取Cookie数组是,既可以通过全变变量$_COOKIE[Cookie_name]来获取,然后使用Foreach输出,如下实例代码:

代码语言:javascript
复制
<?php
setcookie("Cookie[PHP]","PHP是一种脚本语言!");
setcookie("Cookie[MYSQL]","MYSQL是一个数据库!");
setcookie("Cookie[Apache]","Apache是一个服务器!");
foreach($_COOKIE['Cookie'] as $name=>$value){
  echo "$name:$value<br>";
}
?>

运行结果如下:

4 Session的基本形式

Session的基本方式有Session ID的传送和 Session ID 的生成。

1.Session ID的传送有两种方式,一种是Cookie方式,另一种方式是URL方式。

2.Session ID的生成

PHP的会话函数会自动处理ID的创建,但也可以通过手工方式来创建会话ID。它必须是不容易被人猜出来的,否则会有安全隐患。

一般推荐生成会话ID使用随机数发生器函数rand,函数声明如下:

代码语言:javascript
复制
rand(min,max);

如果没有提供可选参数 min 和 max,rand() 返回 0 到 RAND_MAX 之间的伪随机整数。例如,想要 5 到 15(包括 5 和 15)之间的随机数,用 rand(5, 15)。

然后利用md5函数生成一个唯一的会话ID。如下:

代码语言:javascript
复制
md5(rand());

5 创建会话

创建一个Session需要经过以下的几个步骤:启动Session,注册Session变量,使用Session变量以及注销Session变量。

1、启动Session 创建一个会话,使用函数session_start()函数,语法格式如下:

代码语言:javascript
复制
bool session_start();

它判断是否有一个会话ID存在,如果不存在,就创建一个,并且使其能够通过全局数组$_SESSION进行访问。如果已经存在,则将这个已经注册的会话变量载入以供使用。

2、注册Session变量

会话变量被启动后,全部保存在数组$_SESSION中。通过数组$_SESSION创建一个会话变量很容易,只要直拉给该数组添加一个元素即可。如下代码:

代码语言:javascript
复制
$_SESSION["session_name"]="session_value";

3、使用Session变量

获取Session变量,通过全局变量$_SESSION获取:

代码语言:javascript
复制
if(!empty($_SESSION['session_name']))
  $myvalue=$_SESSION['session_name'];

4、注销Session变量

注销会话变量,同数组的操作一样,直接注销$_SESSION数组的某个元素即可。如果要注销$_SESSION['session_name']变量可以直接使用如下语句:

代码语言:javascript
复制
unset($_SESSION['session_name']);

如果整个会话已经结束,首先应该注销所有的会话变量,然后使用session_destroy()函数清除会话ID。

以上大体就是Cookie和Session的介绍,详情可以到PHP中官网中查看,实践可以持续关注我哦。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Lemon黄 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档