本文目录一览:
- 1、php setcookie(name, value, expires, path, domain,
- 2、如何设置cookie的服务器路径
- 3、php使用setcookie设置的session在指定目录有效
- 4、PHP的cookie问题
php setcookie(name, value, expires, path, domain,
setcookie() 定义一个和其余的 HTTP 标头一起发送的 cookie 和其它标头一样 cookie 必须在脚本的任何其它输出之前发送(这是协议限制) 这 需要将本函数的调用放到任何输出之前 包括 和 head 标签以及任何空格 如果在调用 setcookie() 之前有任何输出 本函数将失败并返回 FALSE 如果 setcookie() 函数成功运行 将返回 TRUE 这并不说明用户是否接受了 cookie 函数定义 bool setcookie ( string name [ string value [ int expire [ string path [ string domain [ bool secure]]]]] ) setcookie() 参数详解
参数 说明 举例 name cookie的名字 使用 $_COOKIE[ cookiename ] 调用名为 cookiename 的 cookie value cookie的值 存放在客户端 不要存放敏感数据 假定 name 是 cookiename 可以通过 $_COOKIE[ cookiename ] 取得其值 expire
Cookie 过期的时间 这是个 Unix 时间戳 即从 Unix 纪元开始的秒数
换而言之 通常用 time() 函数再加上秒数来设定 cookie 的失效期
或者用 mktime() 来实现
time()+ * * * 将设定 cookie 天后失效
如果未设定 cookie 将会在会话结束后(一般是浏览器关闭)失效
path Cookie 在服务器端的有效路径
如果该参数设为 / 的话 cookie 就在整个 domain 内有效
如果设为 /foo/ cookie 就只在 domain 下的 /foo/ 目录及其子目录内有效 例如 /foo/bar/
默认值为设定 cookie 的当前目录
domain 该 cookie 有效的域名
要使 cookie 能在如 example 域名下的所有子域都有效的话 该参数应该设为 example
虽然 并不必须的 但加上它会兼容更多的浏览器
如果该参数设为 example 的话 就只在 子域内有效
细节见Cookie 规范中的 tail matching
secure
指明 cookie 是否仅通过安全的 HTTPS 连接传送
当设成 TRUE 时 cookie 仅在安全的连接中被设置 默认值为 FALSE
或
例子 setcookie() 发送例子
复制代码 代码如下: $value = something from somewhere ; setcookie("TestCookie" $value); setcookie("TestCookie" $value time()+ ); /* expire in hour */ setcookie("TestCookie" $value time()+ "/~ra *** us/" " utoronto ca" );
注意 cookie 中值的部分在发送的时候会被自动用 urlencode 编码并在接收到的时候被自动解码并把值赋给与自己同名的 cookie 变量 如果不想这样并且在使用 PHP 的话 可以用 setrawcookie() 来代替 下面这个简单的例子可以得到刚才所设定的 cookie 的值
复制代码 代码如下: ?php // 输出单独的 cookie echo $_COOKIE["TestCookie"]; echo $HTTP_COOKIE_VARS["TestCookie"]; // 另一个调试的方法就是输出所有的 cookie print_r($_COOKIE); ?
要删除 cookie 需要确保它的失效期是在过去 才能触发浏览器的删除机制 下面的例子说明了如何删除刚才设置的 cookie 例子 setcookie() 删除例子
复制代码 代码如下: // 将过期时间设为一小时前 setcookie("TestCookie" "" time() ); setcookie("TestCookie" "" time() "/~ra *** us/" " utoronto ca" );
也可以通过在 cookie 名称中使用数组符号来设定数组 cookie 可以设定多个 cookie 作为数组单元 在脚本提取 cookie 时所有的值都放在一个数组种 例子 setcookie() 中使用数组的例子
复制代码 代码如下: ?php // 设定 cookie setcookie("cookie[three]" "cookiethree"); setcookie("cookie[o]" "cookieo"); setcookie("cookie[one]" "cookieone"); // 刷新页面后 显示出来 if (isset($_COOKIE[ cookie ])) { foreach ($_COOKIE[ cookie ] as $name = $value) { echo "$name : $value br /n"; } } ? lishixinzhi/Article/program/PHP/201311/21055
如何设置cookie的服务器路径
Cookie的setPath()方法,指定的是可访问该Cookie的目录!默认只有同一个Web服务器上同一个路径下设置了该cookie的网页读取!如果你想让这个cookie在多个页面中共享,那么需要使用Cookie的setPath()方法设置path
cookie.setPath("/"),在Tomcat的webapps目录下的所有目录中共享这个cookie。
cookie.setPath("/app1"),只能在app1应用下获取这个cookie,就算这个cookie是app2产生的,app2也不能访问它。
cookie.setPath("/app1/action"),只能在app1/action目录下获取这个cookie。
我想你应该可以明白了,cookie的路径指的是可以访问该cookie的顶层目录,该路径的子路径也可以访问该cookie。
====
在中设置的cookie,但需要在zhidao.baidu.com下获取,这样就需要Cookie的setDomain()方法了。
cookie.setPath("/");
cookie.setDomain("baidu.com");//只给出域名的相同部分
response.add(cookie);
php使用setcookie设置的session在指定目录有效
?php
session_set_cookie_params(0,'/path');
session_start();
if ($_SESSION['name'] = "session"){
echo "设置成功";
} else {
echo "设置失败";
}
?
?php
session_start();
var_dump($_SESSION);
?
PHP的cookie问题
发错地方了!
PHP中使用cookie
1、设置Cookie
PHP用SetCookie函数来设置Cookie。必须注意的一点是:Cookie是HTTP协议头的一部分,用于浏览器和服务器之间传递信息,所以必须在任何属于HTML文件本身的内容输出之前调用Cookie函数。
SetCookie函数定义了一个Cookie,并且把它附加在HTTP头的后面,SetCookie函数的原型如下:
int
SetCookie(string
name,
string
value,
int
expire,
string
path,
string
domain,
int
secure);
除了name之外所有的参数都是可选的。value,path,domain三个参数可以用空字符串代换,表示没有设置;expire
和
secure两个参数是数值型的,可以用0表示。expire参数是一个标准的Unix时间标记,可以用time()或mktime()函数取得,以秒为单位。secure参数表示这个Cookie是否通过加密的HTTPS协议在网络上传输。
当前设置的Cookie不是立即生效的,而是要等到下一个页面时才能看到.这是由于在设置的这个页面里Cookie由服务器传递给客户浏览器,在下一个页面浏览器才能把Cookie从客户的机器里取出传回服务器的原因。
在同一个页面设置Cookie,实际是从后往前,所以如果要在插入一个新的Cookie之前删掉一个,必须先写插入的语句,再写删除的语句,否则可能会出现不希望的结果。
来看几个例子:
简单的:
SetCookie("MyCookie",
"Value
of
MyCookie");
带失效时间的:
SetCookie("WithExpire",
"Expire
in
1
hour",
time()+3600);//3600秒=1小时
什么都有的:
SetCookie("FullCookie",
"Full
cookie
value",
time()+3600,
"/forum",
".phpuser.com",
1);
这里还有一点要说明的,比如站点有几个不同的目录,那么如果只用不带路径的Cookie的话,在一个目录下的页面里设的Cookie在另一个目录的页面里是看不到的,也就是说,Cookie是面向路径的。实际上,即使没有指定路径,WEB服务器会自动传递当前的路径给浏览器的,指定路径会强制服务器使用设置的路径。解决这个问题的办法是在调用SetCookie时加上路径和域名,域名的格式可以是“”,也可是“.phpuser.com”。
SetCookie函数里表示value的部分,在传递时会自动被encode,也就是说,如果value的值是“test
value”在传递时就变成了“test%20value”,跟URL的方法一样。当然,对于程序来说这是透明的,因为在PHP接收Cookie的值时会自动将其decode。
如果要设置同名的多个Cookie,要用数组,方法是:
SetCookie("CookieArray[]",
"Value
1");
SetCookie("CookieArray[]",
"Value
2");
或
SetCookie("CookieArray[0]",
"Value
1");
SetCookie("CookieArray[1]",
"Value
2");
2、接收和处理Cookie
PHP对Cookie的接收和处理的支持非常好,是完全自动的,跟FORM变量的原则一样,特别简单。
比如设置一个名为MyCookier的Cookie,PHP会自动从WEB服务器接收的HTTP头里把它分析出来,并形成一个与普通变量一样的变量,名为$myCookie,这个变量的值就是Cookie的值。数组同样适用。另外一个办法是引用PHP的全局变量$HTTP_COOKIE_VARS数组。
分别举例如下:(假设这些都在以前的页面里设置过了,并且仍然有效)
echo
$MyCookie;
echo
$CookieArray[0];
echo
count($CookieArray);
echo
$HTTP_COOKIE_VARS["MyCookie"];
就这么简单。
3、删除Cookie
要删除一个已经存在的Cookie,有两个办法:
一是调用只带有name参数的SetCookie,那么名为这个name的Cookie将被从关系户机上删掉;另一个办法是设置Cookie的失效时间为time()或time()-1,那么这个Cookie在这个页面的浏览完之后就被删除了(其实是失效了)。
要注意的是,当一个Cookie被删除时,它的值在当前页在仍然有效的。
4、使用Cookie的限制
首先是必须在HTML文件的内容输出之前设置;
其次不同的浏览器对Cookie的处理不一致辞,且有时会出现错误的结果。
第三个限制是在客户端的。一个浏览器能创建的Cookie数量最多为30个,并且每个不能超过4KB,每个WEB站点能设置的Cookie总数不能超过20个。