PHP 编程/Cookie
Cookie 是存储在客户端计算机上的文本形式的小数据块。 通常,Cookie 仅用于存储少量数据,包括用户偏好、时间等。 尽管 Cookie 本身无害,但有些人出于隐私方面的担忧而禁止 Cookie。 在这种情况下,您必须使用会话。
Cookie 最初由 Netscape 引入。 PHP 允许轻松设置和检索 Cookie。
使用 setcookie()[1] 设置 Cookie 非常容易。
- 语法
bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure]]]]])
其中 name
是 Cookie 名称,value
是要包含在 Cookie 中的数据,expire
是 Cookie 过期的时间,path
是服务器上可以使用 Cookie 的路径,domain
可用于设置子域的权限,而 secure
如果设置为 true,则仅在存在安全连接时才传输 Cookie。
由于所有 Cookie 都是由服务器与HTTP 标头一起发送的,因此您需要在页面开头设置任何 Cookie,在任何其他代码之前。 通常,您只需要使用名称、值和过期参数。 如果未设置过期,Cookie 将在客户端关闭浏览器时过期。
- 示例
setcookie("wikibooks", "user", time()+3600);
上面的代码将设置一个名为 wikibooks、值为 user 的 Cookie,并且在设置后一小时过期。
setcookie("test", "PHP-Hypertext-Preprocessor", time()+60, "/location", 1);
这里,setcookie 函数被调用了四个参数(setcookie 还有 1 个可选参数,这里没有使用)。 在上面的代码中,第一个参数是 Cookie 名称,第二个参数是 Cookie 内容,第三个参数是 Cookie 过期的时间(以秒为单位)(time() 返回当前时间,以秒为单位,因此 time()+60 是从现在开始的一分钟)。 路径或位置元素可以省略,但它确实允许您轻松地为目录中的所有页面设置 Cookie,尽管通常不建议使用此方法。
您应该注意,由于 Cookie 是与 HTTP 标头一起发送的,因此代码必须位于页面的顶部(是的,甚至在 DOCTYPE 声明之上)。 任何其他位置都会产生错误。
如果服务器在用户计算机上设置了 Cookie,则用户的浏览器每次加载页面时都会将其发送到服务器。 您的服务器发送的每个 Cookie 的名称都存储在超全局数组 _COOKIE 中。 因此,在上面的示例中,Cookie 将通过调用 $_COOKIE['test'] 来检索。 要访问 Cookie 中的数据,我们使用 explode()[2]。 explode() 将字符串转换为带有字符串中特定分隔符的数组。 这就是我们在 Cookie 内容中使用那些短划线 (-) 的原因。 因此,要检索并打印出 Cookie 中的 PHP 全称,我们使用以下代码
$array = explode("-", $_COOKIE['test']); //retrieve contents of cookie
print("PHP stands for " . $array[0] . $array[1] . $array[2]); //display the content
注意:$_COOKIE 在 4.1.0 中引入。 在早期版本中,使用 $HTTP_COOKIE_VARS。
Cookie 通常用于
- 用户偏好
- 库存
- 测验或投票结果
- 用户身份验证
- 记住较长时间的数据
您决不应在 Cookie 中存储未加密的密码,因为 Cookie 很容易被其他用户读取。
您决不应在 Cookie 中存储关键数据,因为 Cookie 很容易被其他用户删除或修改。