php会话cookie,PHP - Cookie和会话控制(Session)

1、概述

Cookie和会话控制是PHP编程的重要内容,有效使用Cookie和会话控制,可以轻松完成很多复杂任务。

Cookie是在HTTP协议下,服务器或脚本可以维护客户工作站上信息的一种方式。Cookie是由Web服务器保存在客户机上的小文本文件,它可以包含有关用户的信息(如身份识别号码、密码、用户在Web站点购物的方式等)。无论何时用户链接到服务器,Web站点都可以访问Cookie信息。

通过会话控制可以轻松地完成很多任务,例如在网站上某一个页面中的变量(指服务器端变量)是不能在下一页中使用的,但通过Session可以解决上述问题,Session中注册的变量可以作为全局变量使用,这样就可以将Session用于用户身份认证,记录程序状态、页面之间参数传递及电子商务网站中制作购物车等。

2、设置Cookie

setCookie

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

bool setcookie(string name[,string value[,int expire[,string path[,string domain[,int secure]]]]]);

参数说明如下:

0818b9ca8b590ca3270a3433284dd417.png

在PHP中通过$_COOKIE预定义变量来访问Cookie的值。如下面的例子:

$exp = "PHP Cookie测试!";

setcookie("test", $exp);

echo $_COOKIE['test'];

?>

3、删除Cookie

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

$test = "过期时间";

setcookie("test", $test);

setcookie("test", $test, time() + 1800);//0.5小时失效

?>

我们也还可以通过这种方式:

setcookie("test", "", time() - 3600);//删除cookie

?>

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

4、Cookie数组

PHP有一种机制,它可以把数组和Cookie联系起来。使用如下格式:

setcookie("Cookie_name[1]", "Cookie_value1");

setcookie("Cookie_name[2]", "Cookie_value2");

当需要使用Cookie数组时,可以用foreach循环来读取对应的变量名和值。如下代码:

setcookie("Cookie[PHP]", "PHP是一种脚本语言!");

setcookie("Cookie[MYSQL]", "MYSQL是一个数据库!");

setcookie("Cookie[Apache]", "Apache是一个服务器!");

foreach ($_COOKIE["Cookie"] as $name => $value) {

echo "$name:$value
";

// PHP:PHP是一种脚本语言!

// MYSQL:MYSQL是一个数据库!

// Apache:Apache是一个服务器!

}

?>

5、会话的基本方式

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

会话ID的传送有两种方式,一种是Cookie方式,另一种方式是URL方式。

会话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());

6、创建会话

创建一个会话需要通过以下几个步骤:启动一个会话,注册会话变量,使用会话变量,使用会话变量和注销会话变量。

启动一个会话

我们可以通过session_start()函数创建会话。声明如下:

bool session_start();

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

注册全话变量

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

$_SESSION["session_name"]="session_value";

使用会话变量

会话变量的使用就是如何获取它的值,如下代码:

if(!empty($_SESSION['session_name']))

$myvalue=$_SESSION['session_name'];

注销会话变量

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

unset($_SESSION['session_name']);

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

session_start(); //启动会话

$_SESSION['u_name'] = "Jim"; //创建会话变量

echo "用户名:" . $_SESSION['u_name']; // 使用会话变量

echo '退出'; // 在dest.php中注销session

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值