Cookie

常用于识别用户

Cookie是什么

cookie常用于识别用户。cookie是一种服务器留在用户计算机上的小文件。每当同一台计算机通过浏览器请求页面时,这台计算机将会发送cookie,通过PHP,可以创建并取回cookie的值

创建Cookie

setcookie()函数用于设置cookie

setcookie()函数必须位于<html>标签之前

语法

1
setcookie(name, value, expire, path, domain);

实例1
创建名为user的cookie,并为它赋值runoob。我们也规定了此cookie再一小时后过期

1
2
3
4
5
<?php
setcookie("user", "runoob", time()+3600);
?>

<html>

在发送cookie时,cookie的值会自动进行URL编码,在取回时自动解码(为了防止URL编码,请使用setrawcookie()取而代之)

实例2
您还可以通过另一种方式设置cookie的过期时间

1
2
3
4
5
6
<?php
$expire=time()+60*60*24*30;
setcookie("user", "runoob", $expire);
?>

<html>

这个例子过期时间被设置为(60秒*60分*24小时*30天),也就是1个月

取回Cookie值

PHP的$_COOKIE变量用于取回cookie的值

1
2
3
4
5
6
<?php
// 输出 cookie 值
echo $_COOKIE["user"];

// 查看所有 cookie
print_r($_COOKIE);

取回cookie名为user

还可以用isset()函数来确认是否已设置cookie

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>

<?php
if (isset($_COOKIE["user"]))
echo "欢迎 " . $_COOKIE["user"] . "!<br>";
else
echo "普通访客!<br>";
?>

</body>
</html>

删除Cookie

当删除cookie时,应当使过期日期变为过去的时间点

1
2
3
<?php
// 设置 cookie 过期时间为过去 1 小时
setcookie("user", "", time()-3600);

浏览器不支持Cookie

如果有些应用程序需要与不支持cookie的浏览器打交道,那么不得不使用其他方法在应用程序中的页面之间传递信息了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.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>

当点击submit按钮时,便向welcome.php提交了输入

welcome.php

1
2
3
4
5
6
7
8
9
10
11
12
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>

欢迎 <?php echo $_POST["name"]; ?>.<br>
<?php echo $_POST["age"]; ?> 岁了。

</body>
</html>

总结

1.setcookie()函数必须位于<html>标签之前

2.如果不想让cookie被URL编码,可以用setrawcookie()函数取代

3.setcookie()中的expire是以秒为单位设置时间的

4.想要删除cookie,依旧用setcookie()函数,区别就是让它变为过去的时间点

5.不能是用cookie的浏览器,就可以通过表单的方式来让信息在应用程序的页面之间传递