开启辅助访问
帐号登录 |立即注册

php中的Cookie的使用详解

 
1、php中的Cookie是什么?
Cookie 是一种在客户浏览器端存储数据并以此来跟踪和识别用户的机制。简单地说, Cookie 是 Web 服务器暂时存储在用户硬盘上的一个文本文件,并随后被 Web 浏览器读取。 当用户再次访问该 Web 网站时,网站通过读取 Cookie 文件记录中的特定信息(如上次访问的位置、花费的时间、用户名和密码等等),从而迅速的做出相应。 如在页面中不需要输入用户的ID和密码就可以直接登录网站等等。
Cookie 文本文件的命令格式如下:
用户名@网站地址[数字].txt


2、一般Cookie会存在哪儿呢?
Cookie的本质是一小段数据,一小段存储在你电脑硬盘中的数据。可是它存在哪里呢?在不同的浏览器中存储路径可能有些差异。
Chrome浏览器的Cookie文件的存放路径是:
C:\Users\你的用户名\AppData\Local\Google\Chrome\User Data\Default\Cookies
Firefox浏览器的Cookies文件存放路径是:
C:\Users\你的用户名\AppData\Roaming\Mozilla\Firefox\Profiles\xxx.default\cookies.sqlite 每个人可能略有不同
每个 Cookie 文件支持最大容量为4KB;每个域名最多支持20个 Cookie ,如果达到限制时,浏览器会自动地随机删除 Cookie 文件。

3、php中如何读取Cookie
如果 Cookie 设置成功,客户端就拥有了 Cookie 文件,用来保存 Web 服务器为期设置的用户信息。假设我们在客户端使用了 Windows 系统去浏览服务器中的脚本, Cookie 文件会被存放在 “ C:\Documents and Settings\ 用户名\ Cookies” 文件夹下。 Cookie 是一个以普通文本文件形式记录信息的,虽然直接使用文本编辑器就可以打开浏览,但直接去阅读 Cookie 文件中的信息是没有意义的。而是当客户再次访问该网站时,浏览器会自动把与该站点对应的 Cookie 信息全部发送给服务器。 从PHP5之后,任何从客户端发送过来的 Cookie信息,都会被自动保存在 $_COOKIE 全局数组中,所以在每个 PHP脚本中都可以从该数组中读取相应的 Cookie信息。 $_COOKIE 全局数组存储所有通过 HTTP 传递的 Cookie 资料内容,并以 Cookie 的识别名称为索引值、内容值为元素。
在设置 Cookie 脚本中,第一次读取它的信息并不会生效,必须刷新或到下一个页面才可以看到 Cookie 值,因为 Cookie 要先被设置到客户端,再次访问时才能被发送过来,这是才能被获取。所以要测试一个 Cookie 是否被成功设定,可以再其到期之前 通过另外一个页面来访问其的值。
在PHP中可以直接通过超全局变量数组 $_COOKIE[] 来读取浏览器端的 Cookie 值。
实例代码如下所示:
<?php
  date_default_timezone_set('PRC');       //设置时区
if(!isset($_COOKIE['time'])){                //检测 Cookie 文件是否存在
    setcookie('time',date('y-m-d H:i:s'));    //设置一个 Cookie 变量
    echo "第一次访问";
}else{
    setcookie('time',date('y-m-d H:i:s'),time()+60);   //设置保存  Cookie 失效的时间的变量
    echo "上次访问的时间为:".$_COOKIE['time'];        //输出上次访问网站的时间
    echo '<br>';
}
    echo "本次访问的时间为:".date('y-m-d H:i:s');     //输出当前的访问时间
?>
在上面的代码中,首先使用 isset()函数检测 Cookie 文件是否存在。如果不存在,则使用 setcookie() 函数创建一个Cookie,并输出相应的字符串;如果 Cookie 文件存在,则使用 setcookie() 函数 设置文件失效的时间,并输出用户上次访问网站的时间,最后在页面输出本次方位网站的当前时间。


4、php中如何创建Cookie
在PHP中通过 setcookie() 函数创建 Cookie。在创建 Cookie 之前必须了解的是, Cookie是 HTTP 头标的组成部分,而头标必须在页面其他内容之前发送,因此它必须最先输出。所以即使是空格或者是空行,都不要在调用setcookie() 函数之前输出。 若在 setcookie() 函数前输出一个 HTML标记、echo语句,甚至一个空行都会导致程序出错。
其语法是如下的格式:
setcookie(name,value,expire,path,domain,secure)
setcookie() 函数定义一个和其余的 HTTP 标头一起发送的 Cookie,它的所有参数是对应 HTTP 标头 Cookie 资料的属性。虽然 setcookie() 函数的导入参数看起来不少,但除了参数name , 其他参数都是非必须的,而我们经常使用的只有 $name , $value和 $expire 这三个参数。
setcookie() 函数的 参数说明如下:
1) name
Cookie 的变量名
可以通过 $_COOKIE["cookiename"] 调用变量名为 cookiename 的 Cookie
2)value
Cookie 变量的值,该值保存在客户端,不能用来保存敏感数据
可以通过 $_COOKIE["values"] 获取名为 values 的值
3) expire
Cookie 的失效时间,expire 是标准的 UNIX 时间标记,可以用 time()函数 或者 mktime() 函数获取,单位为秒
如果不设置 Cookie 的失效时间 ,那么 Cookie 将永远有效,除非手动将其删除
4) path
Cookie 在服务端的有效路径
如果该参数设置成 “ / ”,则它在整个 domain 内有效, 如果设置为 “ /11 ”,它在 domain 下的 /11 目录及子目录内有效。默认是当前目录
5) domain
Cookie 有效地域名
如果要使 Cookie 在 abc.com 域名下的所有子域名都有效,应该设置为 abc.com
6) secure
指明 Cookie是否通过安全的 HTTPS,值为 0 或 1
如果值为1,则 Cookie 只能在 HTTPS 连接上有效;如果值为默认值 0,则 Cookie 在 HTTP 和 HTTPS连接上均有效。
使用 setcookie() 函数的全部参数设置,实例代码如下的显示
<?php
  setcookie("username","sky",time()+60*60,"/test",".php.cn",1);
?>


5、php中如何删除Cookie
当 Cookie被创建时,如果没有设置它的有效时间,其 Cookie 文件会在关闭浏览器时自动的被删除。如果要在关闭浏览器之前删除保存在客户端的 Cookie 文件,其方法有两种:
第一种方式,省略setcookie() 函数的所有参数列,仅仅使用第一个参数 Cookie 识别名称参数,来删除指定名称的 Cookie 资料;
使用 setcookie() 函数把 Cookie 的生存时间默认设置为空, 则生存期限与浏览器一样,浏览器关闭时 Cookie就会被删除。只指定 Cookie 识别名称一个参数,即删除客户端中这个指定名称的 Cookie 资料。
setcookie("Cookie_name");
注意:把失效时间设置为0,也可以直接删除 Cookie。

第二种方式,利用 setcookie() 函数把目标 Cookie 设置为 “已经过期” 的状态。
删除 Cookie 和 创建 Cookie 的方式基本类型,删除 Cookie 也使用 setcookie() 函数。 删除 Cookie只需要将 setcookie() 函数中的第二个参数设置为空值,将第三个参数 Cookie 的失效时间设置为 小于系统的当前时间即可。
下面就来通过代码来将Cookie 的失效时间设置为当前时间减1秒。
setcookie("Cookie_name", "" , time()-1);
上面的代码中,time()函数返回以秒表示的当前的时间戳,把当前时间减1秒就会得到过去的时间,从而删除 Cookie。




回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

友情链接
  • 艾Q网

    提供设计文章,教程和分享聚合信息与导航工具,最新音乐,动漫,游戏资讯的网站。