8.3.2 获取cookie
当cookie设置后,可以通过PHP预定义变量$_COOKIE来获取cookie。不过,只能在其他页面使用这个变量来获取设置过的cookie,因为PHP中,被设置的cookie并不会在本页生效,除非该页面被刷新。代码8-8演示了设置一个cookie后,在页面打印出该cookie的值。
代码8-8 显示cookie的值8-8.php
01 <?php
02 setcookie("testcookie","ilovephp");//设置cookie
03 echo"cookie's value:".$_COOKIE['testcookie'];//输出指定的cookie
04 ?>
【代码解析】通过浏览器访问8-8.php并刷新,会看到如图8-7所示的输出结果。
【代码解析】这里之所以要刷新页面后才能看到cookie的值,是因为,cookie的值不会在调用setcookie()之后立即出现在变量$_COOKIE中,而是在客户端再次请求该页面时,cookie随请求一起发送至服务器,这时cookie才能存入到变量$_COOKIE中。
下面的代码8-9生成数组cookie,这样可以设置多个cookie,并将其作为数组单元。提取cookie时,所有的值都放在一个数组中。
代码8-9 设置多个cookie 8-9.php
01 <?php
02 //设置多个cookie,存放在数组mycookie中
03 setcookie("mycookie['three']","cookiethree");//设置mycookie['three']
04 setcookie("mycookie['two']","cookietwo");//设置mycookie['two']
05 setcookie("mycookie['one']","cookieone");//设置mycookie['one']
06
07 //刷新页面后,将所有cookie显示出来
08 if(isset($_COOKIE['mycookie']))
09 {
10 foreach($_COOKIE['mycookie']as$name=>$value)
11 {
12 echo"$name:$value<br/>\n";//循环输出各个cookie的值
13 }
14 }
15 ?>
【代码解析】通过浏览器访问代码8-9所示的程序8-9.php,第一次会看到一个空白页面,然后刷新该页面,就会看到如图8-8所示的输出结果。这段代码第10~13行通过循环,从变量$_COOKIE中取出了所有cookie。