轻松上手,快乐学习!

PHP 教程

PHP 教程PHP 简介PHP 下载安装PHP 语法PHP 注释PHP 变量PHP Echo / PrintPHP 数据类型PHP 字符串PHP 数值PHP MathPHP 常量PHP 运算符PHP If...ElsePHP SwitchPHP 循环While 循环Do While 循环For 循环Foreach 循环Break/ContinuePHP 函数PHP 数组索引数组关联数组多维数组数组排序PHP 全局变量$GLOBALS$_SERVER$_REQUEST$_POST$_GETPHP 正则表达式PHP 表单处理PHP 表单验证PHP 表单验证必填字段PHP 表单验证URL/E-mailPHP 表单验证实例PHP 日期和时间PHP IncludePHP 文件处理PHP 文件打开/读取PHP 文件创建/写入PHP 文件上传PHP CookiesPHP SessionsPHP FiltersPHP Filters AdvancedPHP 回调函数PHP JSONPHP 异常处理PHP 什么是 OOPPHP 类和对象PHP 构造函数PHP 析构函数PHP 访问修饰符PHP 继承PHP 类常量PHP 抽象类PHP 接口PHP 特征PHP 静态方法PHP 静态属性PHP 命名空间PHP 可迭代对象MySQL DatabaseMySQL ConnectMySQL Create DBMySQL Create TableMySQL Insert DataMySQL Get Last IDMySQL Insert MultipleMySQL PreparedMySQL Select DataMySQL WhereMySQL Order ByMySQL Delete DataMySQL Update DataMySQL Limit DataPHP XML ParsersPHP SimpleXML ParserPHP SimpleXML - GetPHP XML ExpatPHP XML DOMAJAX IntroAJAX PHPAJAX DatabaseAJAX XMLAJAX Live SearchAJAX PollPHP 实例PHP 编译器PHP 测验PHP 练习

PHP 参考手册

PHP 概述PHP ArrayPHP CalendarPHP DatePHP DirectoryPHP ErrorPHP ExceptionPHP FilesystemPHP FilterPHP FTPPHP JSONPHP KeywordsPHP LibxmlPHP MailPHP MathPHP MiscPHP MySQLiPHP NetworkPHP Output ControlPHP RegExPHP SimpleXMLPHP StreamPHP StringPHP Variable HandlingPHP XML ParserPHP ZipPHP Timezones


PHP setcookie() 函数


实例

以下示例创建一个名为 "user" 的 cookie,其值为 "John Doe"。 cookie 将在 30 天 (86400 * 30) 后过期。 "/" 表示 cookie 在整个网站都可用(否则,请选择您喜欢的目录)。

然后我们检索cookie"用户"的值(使用全局变量$_COOKIE)。 我们还使用 isset() 函数来确定 cookie 是否已设置:

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

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

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

定义和用法

setcookie() 函数定义一个 cookie 与其余 HTTP 标头一起发送。

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

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

注释: setcookie() 函数必须出现在 <html> 标记之前。

注意:cookie的值在发送cookie时自动进行URL编码,接收时自动解码(为了防止URL编码,使用setrawcookie() 代替)。

语法

setcookie(name, value, expire, path, domain, secure, httponly);

参数值

参数 描述
name 必需。指定 cookie 的名称
value 可选。指定cookie的值
expire 可选。 指定cookie何时过期。值:time()+86400*30,将设置cookie在30天后过期。如果省略此参数或设置为 0,则 cookie 将在会话结束时(浏览器关闭时)过期。默认为 0
path 可选。指定cookie的服务器路径。 如果设置为"/",则 cookie 将在整个域中可用。如果设置为"/php/",cookie 将仅在 php 目录和 php 的所有子目录中可用。默认值是设置 cookie 的当前目录
domain 可选。指定cookie的域名。要使 cookie 在 example.com 的所有子域上可用,请将 domain 设置为"example.com"。将其设置为 www.example.com 将使 cookie 仅在 www 子域中可用
secure 可选。指定 cookie 是否应仅通过安全的 HTTPS 连接传输。 TRUE 表示只有存在安全连接时才会设置 cookie。默认为假
httponly 可选。如果设置为 TRUE,则 cookie 只能通过 HTTP 协议访问(脚本语言无法访问 cookie)。此设置有助于减少通过 XSS 攻击进行的身份盗用。默认为假

技术细节

返回值: 若成功则返回 TRUE,若失败则返回 FALSE。
PHP 版本: 4+
PHP 更新日志: PHP 5.5 - 发送到客户端的 Set-Cookie 标头中包含 Max-Age 属性
PHP 5.2 - 添加了 httponly 参数

更多实例

实例

cookie 的多个过期日期:

<?php
$value = "Hello world!";

// cookie will expire when the browser close
setcookie("myCookie", $value);

// cookie will expire in 1 hour
setcookie("myCookie", $value, time() + 3600);

// cookie will expire in 1 hour, and will only be available
// within the php directory + all sub-directories of php
setcookie("myCookie", $value, time() + 3600, "/php/");
?>
<html>
<body>

...some code...
</body>
</html>
亲自试一试 »

实例

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

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

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

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

实例

要删除 cookie,请使用 setcookie() 函数和过去的过期日期:

<?php
// set the expiration date to one hour ago
setcookie("user", "", time() - 3600);
?>
<html>
<body>

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

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

实例

创建一个检查 cookie 是否启用的小脚本。 首先,尝试使用 setcookie() 函数创建一个测试 cookie,然后计算 $_COOKIE 数组变量:

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

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

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