您的位置:

setcookie参数详解

一、setcookie参数简介

setcookie()函数是PHP用于设置cookie的方法,对于需要在网页间交互数据的web应用,cookie是一个非常有力的方式,可以存储一些简单的变量,如用户的偏好设置等,在后续的请求中传递给服务器端。本文将介绍setcookie函数的常用参数及其用途。

二、setcookie参数之name

setcookie函数的第一个参数name是cookie的名称,我们一般使用英文字符串表示。同时,name是必须要设置的参数,否则很难在后续的请求中获取到cookie的值。例如以下代码表示设置了名为username的cookie:

setcookie('username', 'Bob', time() + 60 * 60 * 24 * 7);

以上代码将在客户端保存一个名为username的cookie,其值为Bob。这个cookie将在一周内有效。

三、setcookie参数之value

setcookie函数的第二个参数value表示cookie的值,可以是任何字符串。例如我们可以设置一个email的cookie:

setcookie('email', 'bob@example.com', time() + 60 * 60 * 24 * 7);

以上代码将在客户端保存一个名为email的cookie,其值为bob@example.com。这个cookie将在一周内有效。

四、setcookie参数之expires

setcookie函数的第三个参数expires表示cookie的过期时间,是一个时间戳(以秒为单位)。设置过期时间后,客户端将在该时间之后自动删除该cookie。例如我们希望设置一个一个名为username的cookie,其值为Bob且过期时间是一小时之后:

setcookie('username', 'Bob', time() + 60 * 60);

以上代码将在客户端保存一个名为username的cookie,其值为Bob。这个cookie将在一小时内有效。

五、setcookie参数之path

setcookie函数的第四个参数path表示cookie的有效路径。默认情况下,cookie只能被设置为当前目录及其子目录中的脚本访问。例如我们希望设置一个一个名为username的cookie,其值为Bob且只能在根目录下使用:

setcookie('username', 'Bob', time() + 60 * 60, '/');

以上代码将在客户端保存一个名为username的cookie,其值为Bob。这个cookie将在一小时内有效,且可以在根目录及其子目录中的脚本访问。

六、setcookie参数之domain

setcookie函数的第五个参数domain表示cookie的域名。默认情况下,cookie只能被设置为当前域名或者其子域名中的脚本访问。例如我们希望设置一个一个名为username的cookie,其值为Bob且只能在example.com及其子域名中使用:

setcookie('username', 'Bob', time() + 60 * 60, '/', 'example.com');

以上代码将在客户端保存一个名为username的cookie,其值为Bob。这个cookie将在一小时内有效,且可以在example.com及其子域名中的脚本访问。

七、setcookie参数之secure

setcookie函数的第六个参数secure为true表示cookie只能在HTTPS连接上发送。这种情况下,如果当前连接不是HTTPS连接,浏览器将拒绝接受该cookie。例如我们希望设置一个一个名为username的cookie,其值为Bob且只能在HTTPS连接中使用:

setcookie('username', 'Bob', time() + 60 * 60, '/', 'example.com', true);

以上代码将在客户端保存一个名为username的cookie,其值为Bob。这个cookie将在一小时内有效,且只在HTTPS连接中的脚本中使用。

八、setcookie参数之httponly

setcookie函数的第七个参数httponly为true表示cookie只能用于HTTP传输,不能用于JavaScript。这种情况下,许多常见的XSS攻击就无法进行,提高了网站的安全性。例如我们希望设置一个一个名为username的cookie,其值为Bob并且只能在服务器端访问:

setcookie('username', 'Bob', time() + 60 * 60, '/', 'example.com', true, true);

以上代码将在客户端保存一个名为username的cookie,其值为Bob。这个cookie将在一小时内有效,且只能在服务器端使用,不能用于JavaScript。