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时加上路径和域名,域名的格式可以是“www.phpuser.com”,也可是 “. 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的处理不一致辞,且有时会出现错误的结果。比如: MS IE+SERVICE PACK 1不能正确处理带域名和路径的Cookie,Netscape Communicator 4.05和MS IE 3.0不能正确处理不带路径和时间的Cookie。至于MS IE 5 好象不能处理带域名、路径和时间的Cookie。这是我在设计本站的页面时发现的。
第三个限制是在客户端的。

一个浏览器能 创建的Cookie数量最多为30个,并且每个 不能超过4KB ,每个WEB站点 能设置的Cookie总数不能超过20个 。

(0)

相关推荐

  • curl不使用文件存取cookie php使用curl获取cookie示例

    复制代码 代码如下: /*-----保存COOKIE-----*/$url = 'www.xxx.com'; //url地址$post = "id=user&pwd=123456"; //POST数据$ch = curl_init($url); //初始化curl_setopt($ch,CURLOPT_HEADER,1); //将头文件的信息作为数据流输出curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); //返回获取的输出文本流curl_se

  • 解析php通过cookies获取远程网页的指定代码

    复制代码 代码如下: function Steal($url, $post_data = ""){//$header[] = "Accept: text/vnd.wap.wml,*.*";   $user_agent = "Mozilla/4.0";  $follow_loc = 1;  $cookie_file ="./tmp/cook.txt";  $ch = @curl_init();  @curl_setopt($ch

  • php中如何同时使用session和cookie来保存用户登录信息

    同时使用session和cookie来保存用户登录信息1.数据库连接配置页面:connectvars.php 复制代码 代码如下: <?php//数据库的位置define('DB_HOST', '127.0.0.1');//用户名define('DB_USER', 'root');//口令define('DB_PASSWORD', '19900101');//数据库名define('DB_NAME','test') ;?> 2.登录页面:logIn.php 复制代码 代码如下: <?ph

  • PHP5中Cookie与 Session使用详解

    1.Cookie和Session简介与区别 在非常多时候,我们需要跟踪浏览者在整个网站的活动,对他们身份进行自动或半自动的识别(也就是平时常说的网站登陆之类的功能),这时候,我们常采用Cookie与 Session来跟踪和判断. 区别 Session信息是存放在server端,但session id是存放在client cookie的,当然php的session存放方法是多样化的,这样就算禁用cookie一样可以跟踪 Cookie是完全保持在客户端的如:IE firefox 当客户端禁止cook

  • PHP CURL获取cookies模拟登录的方法

    要提取google搜索的部分数据,发现google对于软件抓取它的数据屏蔽的厉害,以前伪造下 USER-AGENT 就可以抓数据,但是现在却不行了.利用抓包数据发现,Google 判断了 cookies,当你没有cookies的时候,直接返回 302 跳转,而且是连续几十个302跳转,根本抓不了数据.因此,在发送搜索命令时,需要先提取 cookies 并保存,然后利用保存下来的这个cookies再次发送搜索命令即可正常抓数据了.这其实和论坛的模拟登录一个道理,先POST登录,获取cookies并

  • php cookie使用方法学习笔记分享

    PHP setcookie() 函数向客户端发送一个 HTTP cookie.cookie 是由服务器发送到浏览器的变量.cookie 通常是服务器嵌入到用户计算机中的小文本文件.每当计算机通过浏览器请求一个页面,就会发送这个 cookie.cookie 的名称指定为相同名称的变量.例如,如果被发送的 cookie 名为 "name",会自动创建名为 $user 的变量,包含 cookie 的值. 必须在任何其他输出发送前对 cookie 进行赋值.如果成功,则该函数返回 true,否

  • 在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 doma

  • 探讨多键值cookie(php中cookie存取数组)的详解

    cookie默认不能存数组,所以下面的写法是错误的.报错如下:Warning: setcookie() expects parameter 2 to be string, array given in但是PHP可以把同名且后面以[]结尾的cookie解析为数组.在php里面实现cookie存数组的方法如下: 方法一:先用serialize序列化数组,再存入COOKIE   ,读出来时用unserialize得到原来的数组方法二:设定多键值cookie,注意必须给键值 复制代码 代码如下: $ar

  • php设置session值和cookies的学习示例

    第一步:先在本地写一个登陆页面和一个内容页面(登陆了才能进去)吧.代码大致如下: 下面是login.php,用于请求登陆的,通过post传递参数,如果登陆成功就会注册session. 复制代码 代码如下: <?phpsession_start(); if (isset($_POST['username'])) {    $username = $_POST['username'];    $password = $_POST['password']; if ($username == 'admi

  • php中cookie的使用方法

    1.创建/更新cookie 复制代码 代码如下: setCookie($cookieName,$value,time()+秒数): 例子:创建一个cookie,名字为UserName,值为zs,过期时间为2个星期 复制代码 代码如下: setcookie("UserName","zs",time()+2*7*24*3600); 如果不设置时间,就不会保存到cookie文件中.浏览器不关时,能够访问.当浏览器关闭时,就无法访问了. 例子: 复制代码 代码如下: set

  • 基于PHP创建Cookie数组的详解

    创建: 复制代码 代码如下: setcookie("ICNet[Reg]", "This is reg cookie", time() + 3600);setcookie("ICNet[Active]", "This is login cookie.", time() + 3600);print_r($_COOKIE); /*Result:Array (  [ICNet] => Array ( [Reg] => T

  • 怎样使用php与jquery设置和读取cookies

    HTTP协议是一种无状态协议,这意味着你对网站的每一个请求都是独立的,而且因此无法通过它自身保存数据.但这种简单性也是它在互联网早期就广泛传播的原因之一. 不过,它仍然有一种方法能让你用cookies的形式来保存请求之间的信息.这种方法使你能够更有效率的进行会话管理和维持数据. 有两种处理cookies的方式-服务端(php,asp等)和客户端(javascript).在这个教程中,我们将学习到以php和javascript这两种方式如何去创建cookies. Cookies and php s

  • php跨域cookie共享使用方法

    A 机器所在的域:a1.main.com,A 有应用 main.phpB 机器所在的域:b1.test.com,B 有应用 test.php 1.在 main.php 里设置 cookie 的时候, cookie 的设置方法如下: 复制代码 代码如下: setcookie( "TestCookie",  "okol",  time() + 3600,  "/", "b1.test.com", 1 ); 这样在 test.php

  • 深入理解PHP中的Session和Cookie

    在一个页面设置一个cookie时,必须刷新或到下一个页面才可以用 $_COOKIE 得到变量的值.原因是因为当页面第一次被浏览器访问载入时,页面中的 cookie 会被设置,将其发送存储到客户端指定的存储位置,所以$_COOKIE没有接收到客户端发送过来的 cookie 变量的值,当刷新或到下一个页面时,客户端会在页面程序在服务器端运行之前,发送与该地址相对应的 cookie到服务器端,所以 $_COOKIE 可以得到的值! 说白了就是当每一个页面被访问时,如果客户端找到了与访问地址相对应的 c

  • LotusPhp笔记之:Cookie组件的使用详解

    LotusPhp 的 Cookie 组件也是非常简单易用的. 首先,要新建一个配置文件,文件名为 cookie.conf.php,至于放在哪里等到讲到 Config 组件的时候会有一个阐述,今天先说怎么用,需要哪些步骤. Cookie 配置文件的主要内容就是定义 Cookie 的加密密匙,程序里自动对 Cookie 内容进行加密,当然这样有一个弊端,就是客户端无法直接读取和操作,只能服务器来操作.如果你要直接用 js 在客户端操作 Cookie ,那最好还是不要用 LotusPhp 的 Cook

  • PHP的curl实现get,post和cookie(实例介绍)

    类似于dreamhost这类主机服务商,是显示fopen的使用 的.使用php的curl可以实现支持FTP.FTPS.HTTP HTPPS SCP SFTP TFTP TELNET DICT FILE和LDAP.curl 支持SSL证书.HTTP POST.HTTP PUT .FTP 上传,kerberos.基于HTT格式的上传.代理.cookie.用户+口令证明.文件传送恢复.http代理通道就最常用的来说,是基于http的 get和post方法.代码实现:1.http的get实现 复制代码

  • PHP COOKIE及时生效的方法介绍

    通常,php里要浏览器刷一下才能出现cookie,怎么才能让cookie及时生效呢,下面分享一个让cookie及时生效的一个方法,很实用,代码如下: 复制代码 代码如下: /** * 设置cookie * @param string $name 键名 * @param mixed $value 值 * @param int $expire 过期时间,默认是一天 */public final function setCookie($name, $value, $expire = null){   

  • php setcookie(name, value, expires, path, domain, secure) 参数详解

    setcookie() 定义一个和其余的 HTTP 标头一起发送的 cookie.和其它标头一样,cookie 必须在脚本的任何其它输出之前发送(这是协议限制).这需要将本函数的调用放到任何输出之前,包括 <html> 和 <head> 标签以及任何空格.如果在调用 setcookie() 之前有任何输出,本函数将失败并返回 FALSE.如果 setcookie() 函数成功运行,将返回 TRUE.这并不说明用户是否接受了 cookie.函数定义:bool setcookie (

随机推荐