PHP Cookie
PHP Cookie
Cookie 是什么
Cookie 是在 HTTP 协议下,服务器或脚本用来维护客户端上信息的一种方式。Cookie 是由 Web 服务器保存在用户浏览器(客户端)上的小文本文件,它可以包含有关用户的信息。无论何时用户链接到服务器,Web 站点都可以访问 Cookie 信息。
有些 Cookie 是临时的,有些则是持续的。临时的 Cookie 只在浏览器上保存一段规定的时间,一旦超过规定的时间,该 Cookie 就会被系统清除。
持续的 Cookie 则保存在用户的 Cookie 文件中,下一次用户返回时,仍然可以对它进行调用。在 Cookie 文件中保存 Cookie,有些用户担心 Cookie 中的用户信息被一些别有用心的人窃取,而造成一定的损害。
Cookie 的用途
Cookie 最典型的应用是识别用户,判定注册用户是否已经登录网站,同时用户可能也会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,这些都是 Cookie 的功用。
另一个重要应用场合就是商城类网站的“购物车”功能。用户可能会在一段时间内在同一家网站的不同页面中选择不同的商品,这些信息都会写入 Cookie,以便在最后付款时提取信息。
如何创建 Cookie?
setcookie() 函数用于设置 cookie。
注意:setcookie() 函数必须位于
<html>
标签之前。
语法
setcookie(name, value, expire, path, domain);
示例 1
在下面的例子中,我们将创建名为 "user" 的 cookie,并为它赋值 "runoob"。我们也规定了此 cookie 在一小时后过期:
<?php
setcookie("user", "runoob", time()+3600);
?>
<html>
.....
注意:在发送 cookie 时,cookie 的值会自动进行 URL 编码,在取回时进行自动解码。(为防止 URL 编码,请使用 setrawcookie() 取而代之。)
示例 2
您还可以通过另一种方式设置 cookie 的过期时间。这也许比使用秒表示的方式简单。
<?php
$expire=time()+60*60*24*30;
setcookie("user", "runoob", $expire);
?>
<html>
.....
在上面的实例中,过期时间被设置为一个月(60 秒 * 60 分 * 24 小时 * 30 天)。
如何取回 Cookie 的值?
PHP 的 $_COOKIE 变量用于取回 cookie 的值。
在下面的示例中,我们取回了名为 "user" 的 cookie 的值,并把它显示在了页面上:
<?php
// 输出 cookie 值
echo $_COOKIE["user"];
// 查看所有 cookie
print_r($_COOKIE);
?>
在下面的示例中,我们使用 isset() 函数来确认是否已设置了 cookie:
<html>
<head>
<meta charset="utf-8">
<title>迹忆客(jiyik.com)</title>
</head>
<body>
<?php
if (isset($_COOKIE["user"]))
echo "欢迎 " . $_COOKIE["user"] . "!<br>";
else
echo "普通访客!<br>";
?>
</body>
</html>
如何删除 Cookie?
当删除 cookie 时,您应当使过期日期变更为过去的时间点。
删除的示例:
<?php
// 设置 cookie 过期时间为过去 1 小时
setcookie("user", "", time()-3600);
?>
如果浏览器不支持 Cookie 该怎么办?
如果您的应用程序需要与不支持 cookie 的浏览器打交道,那么您不得不使用其他的办法在您的应用程序中的页面之间传递信息。一种方式是通过表单传递数据(有关表单和用户输入的内容,在本教程的前面章节中我们已经介绍过了)。
下面的表单在用户单点击 "Submit" 按钮时,向 "welcome.php" 提交了用户输入:
<html>
<head>
<meta charset="utf-8">
<title>迹忆客(jiyik.com)</title>
</head>
<body>
<form action="welcome.php" method="post">
名字: <input type="text" name="name">
年龄: <input type="text" name="age">
<input type="submit">
</form>
</body>
</html>
取回 "welcome.php" 文件中的值,如下所示:
<html>
<head>
<meta charset="utf-8">
<title>迹忆客(jiyik.com)</title>
</head>
<body>
欢迎 <?php echo $_POST["name"]; ?>.<br>
你 <?php echo $_POST["age"]; ?> 岁了。
</body>
</html>