目录

PHP setrawcookie() 函数

❮ PHP 网络参考

示例

以下示例使用 PHP 创建 cookie。该 cookie 名为 "user",其值为 "John Doe"。 cookie 值不会进行 URL 编码。 Cookie 将在 30 天 (86400 * 30) 后过期。使用"/",意味着 cookie 在整个网站中可用(否则,选择您喜欢的目录):

<?php
$cookie_name = "user";
$cookie_value = "John";
setrawcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");
// 86400 = 1 day
?>
<html>
<body>

<?php
echo "Cookie is set.";
?>

</body>
</html>
?>
亲自试一试 »

定义和用法

setrawcookie() 函数定义要与其余 HTTP 标头一起发送的 cookie(不带 URL 编码)。

cookie 通常用于识别用户。 Cookie 是服务器嵌入到用户计算机上的一个小文件。每次同一台计算机通过浏览器请求页面时,它也会发送 cookie。使用 PHP,您可以创建和检索 cookie 值。

cookie 的名称会自动分配给同名的变量。例如,如果发送的 cookie 名称为 "user",则会自动创建一个名为 $user 的变量,其中包含 cookie 值。

笔记:setrawcookie() 函数必须出现在 <html> 标记之前。

笔记:要在发送时自动对 cookie 值进行 URL 编码,并在接收时自动解码,请使用设置cookie()函数代替。

语法

setrawcookie( name, value, expire, path, domain, secure);

参数值

Parameter Description
name Required. Specifies the name of the cookie
value Optional. Specifies the value of the cookie
expire Optional. Specifies when the cookie expires. The value: time()+86400*30, will set the cookie to expire in 30 days. If this parameter is not set, the cookie will expire at the end of the session (when the browser closes)
path Optional. Specifies the server path of the cookie. If set to "/", the cookie will be available within the entire domain. If set to "/php/", the cookie will only be available within the php directory and all sub-directories of php. The default value is the current directory that the cookie is being set in
domain Optional. Specifies the domain name of the cookie. To make the cookie available on all subdomains of example.com, set domain to ".example.com". Setting it to www.example.com will make the cookie only available in the www subdomain
secure Optional. Specifies whether or not the cookie should only be transmitted over a secure HTTPS connection. TRUE indicates that the cookie will only be set if a secure connection exists. Default is FALSE.


技术细节

返回值: 成功则为真。失败时为 FALSE
PHP 版本: 5+

更多示例

示例

检索名为 "user" 的 cookie 的值(使用全局变量 $_COOKIE)。还可以使用 isset() 函数来查找 cookie 是否存在:

<html>
<body>

<?php
$cookie_name = "user";
if(!isset($_COOKIE[$cookie_name])) {
    echo "Cookie named '" . $cookie_name . "' does not exist!";
} else {
    echo "Cookie is named: " . $cookie_name . "<br>Value is: " . $_COOKIE[$cookie_name];
}
?>

</body>
</html>
亲自试一试 »

示例

要修改 cookie,只需使用 setrawcookie() 函数(再次)设置 cookie:

<?php
$cookie_name = "user";
$cookie_value = "Alex";
setrawcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");
?>
<html>
<body>

<?php
$cookie_name = "user";
if(!isset($_COOKIE[$cookie_name])) {
    echo "Cookie named '" . $cookie_name . "' does not exist!";
} else {
    echo "Cookie is named: " . $cookie_name . "<br>Value is: " . $_COOKIE[$cookie_name];
}
?>

</body>
</html>
亲自试一试 »

示例

要删除 cookie,请使用 setrawcookie() 函数并指定过去的过期日期:

<?php
$cookie_name = "user";
unset($_COOKIE[$cookie_name]);
// empty value and expiration one hour before
$res = setrawcookie($cookie_name, '', time() - 3600);
?>
<html>
<body>

<?php
echo "Cookie 'user' is deleted.";
?>

</body>
</html>
亲自试一试 »

示例

创建一个小脚本来检查 cookie 是否已启用。首先,尝试使用 setrawcookie() 函数创建一个测试 cookie,然后对 $_COOKIE 数组变量进行计数:

<?php
setrawcookie("test_cookie", "test", time() + 3600, '/');
?>
<html>
<body>

<?php
if(count($_COOKIE) > 0) {
    echo "Cookies are enabled";
} else {
    echo "Cookies are disabled";
}
?>

</body>
</html>
亲自试一试 »

❮ PHP 网络参考