PHP Cookie
cookie 常用于识别用户
PHP 提供了全局变量 $_COOKIE 变量来获取浏览器传递的 cookie 信息
Cookie 是什么?
cookie 常用于识别用户
cookie 是一种服务器留在用户计算机上的小文件
每当同一台计算机通过浏览器请求页面时,这台计算机将会发送 cookie
我们可以使用 PHP 来设置和读取 cookie 的值
如何设置 Cookie?
PHP 提供了 setcookie()
函数用于设置 cookie
注意
因为 Cookie 信息是放置在 HTTP 响应头部,所以 setcookie() 函数必须在发送任何响应内容之前调用
一般情况下就是必须位于 <html> 标签之前
语法
PHP setcookie() 函数语法格式如下
setcookie(name, value, expire, path, domain);
注意
在发送 cookie 时,cookie 的值会自动进行 URL 编码,在取回时进行自动解码
如果你不想 URL 被编码,可以使用 setrawcookie()
范例 2
下面这个范例,我们将设置名为 "user" 的 cookie,并为它赋值 "twle"
然后设置此 cookie 在一小时后过期
<?php setcookie("user", "twle", time()+3600); ?> <!DOCTYPE html> <meta charset="utf-8" /> .....
实例 2
现在我们使用另一种方式设置 cookie 的过期时间
这种方式看起来更加直观简单
<?php $expire=time()+60*60*24*30; setcookie("user", "twle", $expire); ?> <html> .....
如何取回 Cookie 的值?
PHP 的 $_COOKIE 变量用于读取 cookie 的值
下面这个范例中,我们读取了名为 "user" 的 cookie 的值,并把它显示在了页面上
<?php // 输出 cookie 值 echo $_COOKIE["user"]; // 查看所有 cookie print_r($_COOKIE);
下面这个范例中,我们使用 isset() 函数来确认是否已设置了 cookie
php_cookie_1.php
<!DOCTYPE html> <meta charset="utf-8"> <title>简单编程(twle.cn)</title> <?php if (isset($_COOKIE["user"])) echo "欢迎 ",$_COOKIE["user"],"!<br>"; else echo "普通访客!<br>"; echo '<p>PHP 基础教程 - 简单教程(www.twle.cn)</p>'; ?>
运行以上 PHP 范例,输出结果如下
如何删除 Cookie?
当我们想要删除 cookie 时,应该设置过期日期变更为过去的时间点
<?php // 设置 cookie 过期时间为过去 1 小时 setcookie("user", "", time()-3600);
如果浏览器不支持 Cookie 该怎么办?
当我们的 PHP 应用程序与不支持 cookie 的浏览器打交道时,我们不得不使用其它方法在应用程序中的页面之间传递信息
一种方式是通过表单传递数据
下面的表单在用户单点击 "Submit" 按钮时,向 "php_cookie_2.php" 提交了用户输入
php_cookie_2_form.php
<!DOCTYPE html> <meta charset="utf-8"> <title>简单编程(twle.cn)</title> <form action="welcome.php" method="post"> 名字: <input type="text" name="name"> 年龄: <input type="text" name="age"> <input type="submit"> </form> <p>PHP 基础教程 - 简单教程(www.twle.cn)</p>
php_cookie_2.php 文件中的代码如下
<!DOCTYPE html> <meta charset="utf-8"> <title>简单编程(twle.cn)</title> 欢迎 <?php echo $_POST["name"]; ?>.<br> 你 <?php echo $_POST["age"]; ?> 岁了。 <p>PHP 基础教程 - 简单教程(www.twle.cn)</p>