名人之声
所谓科学的论辩,从总体上来说则是没有多大效果的,更不用说论辩几乎总是各持己见的这个事实。
——弗洛伊德
在PHP中,Cookie和会话控制(Session)是很重要的编程内容,今天我们就来简单介绍介绍它们。
Cookie 是在 HTTP 协议下,服务器或脚本可以维护客户工作站上信息的一种方式。Cookie 是由 Web 服务器保存在用户浏览器(客户端)上的小文本文件,它可以包含有关用户的信息。无论何时用户链接到服务器,Web 站点都可以访问 Cookie 信息。
Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web页时,如果该用户还没有会话,则Web服务器将自动创建一个 Session对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在Session对象中。
1 设置Cookie
在PHP中设置Cookie,使用函数setcookie()。函数的语法格式如下:
bool setcookie(string name[,string value[,int expire[,string path[,string domain[,int secure]]]]]);
如下函数的参数说明:
如下示例代码:
<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函数设置过期时间。
<?php
$test="过期时间";
setcookie("test",$test);
setcookie("test",$test,time()+1800); //0.5小时失效
?>
也可以通过以下的方式来达到删除Cookie,即过期时间赋予负数
<?php
setcookie("test","",time()-3600); //删除Cookie
?>
然后我们就可以判断Cookie是否为空(empty($_COOKIE['test'])),如果为空则表示已经删除。
3 Cookie数组
保存数组形式的Cookie,可以使用如下格式:
setcookie("Cookie_name[1]","Cookie_value1");
setcookie("Cookie_name[2]","Cookie_value2");
当需要获取Cookie数组是,既可以通过全变变量$_COOKIE[Cookie_name]来获取,然后使用Foreach输出,如下实例代码:
<?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,函数声明如下:
rand(min,max);
如果没有提供可选参数 min 和 max,rand() 返回 0 到 RAND_MAX 之间的伪随机整数。例如,想要 5 到 15(包括 5 和 15)之间的随机数,用 rand(5, 15)。
然后利用md5函数生成一个唯一的会话ID。如下:
md5(rand());
5 创建会话
创建一个Session需要经过以下的几个步骤:启动Session,注册Session变量,使用Session变量以及注销Session变量。
1、启动Session 创建一个会话,使用函数session_start()函数,语法格式如下:
bool session_start();
它判断是否有一个会话ID存在,如果不存在,就创建一个,并且使其能够通过全局数组$_SESSION进行访问。如果已经存在,则将这个已经注册的会话变量载入以供使用。
2、注册Session变量
会话变量被启动后,全部保存在数组$_SESSION中。通过数组$_SESSION创建一个会话变量很容易,只要直拉给该数组添加一个元素即可。如下代码:
$_SESSION["session_name"]="session_value";
3、使用Session变量
获取Session变量,通过全局变量$_SESSION获取:
if(!empty($_SESSION['session_name']))
$myvalue=$_SESSION['session_name'];
4、注销Session变量
注销会话变量,同数组的操作一样,直接注销$_SESSION数组的某个元素即可。如果要注销$_SESSION['session_name']变量可以直接使用如下语句:
unset($_SESSION['session_name']);
如果整个会话已经结束,首先应该注销所有的会话变量,然后使用session_destroy()函数清除会话ID。
以上大体就是Cookie和Session的介绍,详情可以到PHP中官网中查看,实践可以持续关注我哦。