bool setcookie(string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]])
bool setcookie(string name,string value,int expire,string path,string domain,bool secure,bool $httponly);
其中:
name为cookie的名字,
value为cookie的值,
expire为过期时间的秒级时间戳(默认为0,代表内存cookie,关闭浏览器即失效)
path为cookie的路径,浏览器在发送cookie是只会发送对应路径及祖先级路径的cookie,如cookieA设置在根下,cookieB设置在/dir/下,访问dir的请求会带着cookieB和cookieA,但访问根路径的请求只会带着cookieA
domain为cookie的域名,只能设置为当前域或当前域的上级域。例如:一个在a.b.com的页面,可以设置domain为a.b.com,b.com,设置为a.b.com只能在a.b.com中访问cookie,若直接设置为b.com,则可以在其他b.com域下访问
secure为true会对cookie进行HTTPS加密传输
httponly为true时,只能通过请求发送cookie,使用javascript无法读取httponly的cookie,安全性更高
例如:
//http://a.php.com/cookie.php
$expire = time() + 60; // 设置1分钟的有效期
//$expire = time()-1; //设置删除cookie的有效期
$domain = "a.php.cn"; //当前域为a.php.cn 则只能设置a.php.cn 和 php.cn
$domain = "php.cn"; //给顶级域名设置cookie(跨子域设置cookie)。
//设置字符串的cookie:
$name = "bob";
$name2 = "wangsan2";
$name3 = "jerry3";
setcookie("name",$name,$expire,"/",$domain);
setcookie("name3",$name3,$expire,"/",$domain2);
setcookie("name2",$name2,$expire,"/",$domain2);
var_dump($_COOKIE['name']);
var_dump($_COOKIE['name2']);
var_dump($_COOKIE['name3']);
var_dump($_COOKIE['name5']);
var_dump($_COOKIE['name6']);
//设置数组的cookie:
$names = array("book","cnds","jerry","hub","wow","man","boys");
$names_s = serialize($names);
setcookie("names",$names_s,$expire,'/','php.cn');
//http://b.php.com/cookie.php
$expire = time() + 20;
//$expire = time()-1;
$domain1 = "b.php.cn";//当前域为b.php.cn 则只能设置b.php.cn 和 php.cn
$domain2 = "php.cn";
$name2 = "wangsan";
$name5 = "bob5";
$name6 = "jerry6";
setcookie("name",$name2,$expire,"/",$domain1);
setcookie("name5",$name5,$expire,"/",$domain2);
setcookie("name6",$name6,$expire,"/",$domain2);
var_dump($_COOKIE['name']);
var_dump($_COOKIE['name2']);
var_dump($_COOKIE['name3']);
var_dump($_COOKIE['name5']);
var_dump($_COOKIE['name6']);
$name_s = $_COOKIE['names'];
$names = unserialize($name_s);
var_dump($names);
bool setcookie(string name,string value,int expire,string path,string domain,bool secure,bool $httponly);
其中:
name为cookie的名字,
value为cookie的值,
expire为过期时间的秒级时间戳(默认为0,代表内存cookie,关闭浏览器即失效)
path为cookie的路径,浏览器在发送cookie是只会发送对应路径及祖先级路径的cookie,如cookieA设置在根下,cookieB设置在/dir/下,访问dir的请求会带着cookieB和cookieA,但访问根路径的请求只会带着cookieA
domain为cookie的域名,只能设置为当前域或当前域的上级域。例如:一个在a.b.com的页面,可以设置domain为a.b.com,b.com,设置为a.b.com只能在a.b.com中访问cookie,若直接设置为b.com,则可以在其他b.com域下访问
secure为true会对cookie进行HTTPS加密传输
httponly为true时,只能通过请求发送cookie,使用javascript无法读取httponly的cookie,安全性更高
例如:
//http://a.php.com/cookie.php
$expire = time() + 60; // 设置1分钟的有效期
//$expire = time()-1; //设置删除cookie的有效期
$domain = "a.php.cn"; //当前域为a.php.cn 则只能设置a.php.cn 和 php.cn
$domain = "php.cn"; //给顶级域名设置cookie(跨子域设置cookie)。
//设置字符串的cookie:
$name = "bob";
$name2 = "wangsan2";
$name3 = "jerry3";
setcookie("name",$name,$expire,"/",$domain);
setcookie("name3",$name3,$expire,"/",$domain2);
setcookie("name2",$name2,$expire,"/",$domain2);
var_dump($_COOKIE['name']);
var_dump($_COOKIE['name2']);
var_dump($_COOKIE['name3']);
var_dump($_COOKIE['name5']);
var_dump($_COOKIE['name6']);
//设置数组的cookie:
$names = array("book","cnds","jerry","hub","wow","man","boys");
$names_s = serialize($names);
setcookie("names",$names_s,$expire,'/','php.cn');
//http://b.php.com/cookie.php
$expire = time() + 20;
//$expire = time()-1;
$domain1 = "b.php.cn";//当前域为b.php.cn 则只能设置b.php.cn 和 php.cn
$domain2 = "php.cn";
$name2 = "wangsan";
$name5 = "bob5";
$name6 = "jerry6";
setcookie("name",$name2,$expire,"/",$domain1);
setcookie("name5",$name5,$expire,"/",$domain2);
setcookie("name6",$name6,$expire,"/",$domain2);
var_dump($_COOKIE['name']);
var_dump($_COOKIE['name2']);
var_dump($_COOKIE['name3']);
var_dump($_COOKIE['name5']);
var_dump($_COOKIE['name6']);
$name_s = $_COOKIE['names'];
$names = unserialize($name_s);
var_dump($names);