php中的cookie用法

本文详细解释了Cookie和Session的工作原理、创建、读取、销毁和注意事项,包括如何在PHP中使用setcookie函数生成Cookie,以及通过$_COOKIE变量访问Cookie值,同时讨论了Cookie存在的风险和如何防范。
cookie和session都可以暂时保存在多个页面中使用的变量,但是它们有本质的差别。
cookie存放在客户端浏览器中,session保存在服务器上。它们之间的联系是session ID一般保存在cookie中。

cookie工作原理
当客户访问某个网站时,在PHP中可以使用setcookie函数生成一个cookie,系统经处理把这个cookie发送到客户端并保存在c:\Documents and Settings\用户名\Cookies目录下。cookie是HTTP标头的一部分,因此setcookie函数必须在任何内容送到浏览器之前调用。这种限制与header()函数一样。当客户再次访问该网站时,浏览器会自动把c:\Documents and Settings\用户名\Cookies目录下与该站点对应的cookie发送到服务器,服务器则把从客户端传来的cookie将自动地转化成一个PHP变量。
通过$_COOKIE['xxx']读取客户端发来的cookie。
创建 cookie
通过 setcookie() 函数来创建一个 cookie ,成功返回 TRUE ,否则返回 FALSE 。
语法:
bool setcookie( string name [, string value [, int expire [, string path [, string domain ]]]] )

参数说明:
name     cookie 名称
value     可选,cookie 值
expire     可选,过期时间,时间戳格式
path     可选,服务器端有效路径,/ 表示整个域名有效,默认为当前设置 cookie 时页面的路径
domain     可选,该 cookie 有效的域名

<?php
setcookie("username", "nostop", time()+3600); //设置了一个名称为 username 的cookie,其值为 xiaoli ,并在1小时候后过期。如果时间也被省略,cookie 将会在会话结束后(一般是浏览器关闭)失效。
?>

读取 cookie
PHP 内置了 $_COOKIE 变量以访问设置的 cookie 值。
例子:
<?php
echo $_COOKIE["username"];    //nostop
?>

销毁 cookie

调用只带有name参数的setcookie  setcookie("username");

设置cookie的失效时间为 time();或是time()-1;


判断某个cookie是否存在了

isset($_COOKIE["username"]);

使用isset()函数检测cookie变量是否已经被设置


cookie注意事项

1、SetCookie()之前不能有任何html输出,就是空格,空白行都不行。
2、SetCookie()后,你在当前页调用echo $_COOKIE["name"]不会有输出。必须刷新或到下一个页面在过期之前才可以看到Cookie值。
3、由于 cookie 信息存储于用户的计算机中,那么就有可能伪造或修改 cookie 从而造成 cookie 欺骗,一般可以对 cookie 的值进行加密来预防欺骗。读取 cookie 的时候,对 cookie 解密即可。
4、Cookie是保存在客户端的,用户禁用了Cookie,你的Cookie自然也就没作用啦!

<?php

setcookie('username','nostop',time()+3600);    //创建cookie

if(isset($_COOKIE["username"])){    //使用isset()函数检测cookie变量是否已经被设置

    echo "您好!".$_COOKIE["username"];    //您好!nostop     读取cookie 
}else{
    echo "请登陆";
}

?>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

紫云的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值