session与cookie会话控制
发布:smiling 来源: PHP粉丝网 添加日期:2013-11-14 19:14:22 浏览: 评论:0
1. PHP的COOKIE
cookie 是一种在远程浏览器端储存数据并以此来跟踪和识别用户的机制。
PHP在http协议的头信息里发送cookie, 因此 setcookie() 函数必须在其它信息被输出到浏览器前调用,这和对 header() 函数的限制类似。
1.1 设置cookie: (会话cookie 、 持久cookie)
可以用 setcookie() 或 setrawcookie() 函数来设置 cookie。也可以通过向客户端直接发送http头来设置.
1.1.1 使用setcookie()函数设置cookie:
bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure [, bool httponly]]]]]] )
name: cookie变量名
value: cookie变量的值
expire: 有效期结束的时间,
path: 有效目录,
domain: 有效域名,顶级域唯一
secure: 如果值为1,则cookie只能在https连接上有效,如果为默认值0,则http和https都可以.
httponly: 如果为1,则cookie只能通过HTTP协议来访问,而不能通过脚本来访问,很好的避免了XSS攻击。例子:
- $value = 'something from somewhere';
- setcookie("TestCookie", $value);
- setcookie("TestCookie", $value, time()+3600);
- setcookie("TestCookie", $value, time()+3600, "/~rasmus/", ".example.com", 1);
- ?>
设置多个cookie变量: setcookie('var[a]','value'); 用数组来表示变量,但它的下标不用引号.(会自动加上下标,如果加上引号会出现重复或者可能会被转义,下标不可用)这样就可以用$_COOKIE['var']['a']来读取该COOKIE变量.
1.1.2. 使用header()设置cookie;
header("Set-Cookie: name=$value[;path=$path[;domain=xxx.com[;...]]");
后面的参数和上面列出setcookie函数的参数一样.比如:
$value = 'something from somewhere';
header("Set-Cookie:name=$value");
1.1.3. Cookie 的存放位置
不同的浏览器保存Cookie的位置都不一样,甚至保存格式都是不一样的。已IE和firefox为例:IE是把cookie保存在C:\Documents and Settings\用户名\Cookies中,每个cookie是一个txt文件,文件名是以“用户名@网站URL”命名的;firefox则是把cookie保存在C:\Documents and Settings\用户名\Application Data\Mozilla\Firefox\Profiles\随机目录,在目录下可以看到一个cookie.sqlite文件(firefox3.X版本),所有的cookie都是保存在这个文件中。
1.2 Cookie的读取:
直接用php内置超级全局变量 $_COOKIE就可以读取浏览器端的cookie.
print $_COOKIE['TestCookie'];
1.3 删除cookie
(1)只需把有效时间设为小于当前时间
(2)把值设置为空.
例如: setcookie("name","",time()-1);
用header()类似.
1.4 常见问题解决:
1) 用setcookie()时有错误提示(headers already sent ...),可能是因为调用setcookie()前面有输出或空格.也可能你的文档是从其他字符集转换过来,文档可能带有BOM签名(就是在文件内容添加一些隐藏的BOM字符).解决的办法就是使你的文档不出现这种情况.还有通过使用ob_start()函数有也能处理一点.
2) $_COOKIE受magic_quotes_gpc影响,可能自动转义
3) 使用的时候,有必要测试用户是否支持cookie
1.5 cookie工作机理:
a) 当客户端初次请求服务器的时候,如果服务器端有设置cookie的语句,则服务器通过随着响应发送一个http的Set-Cookie头,在客户端中设置一个cookie文件。
Tags: session cookie 会话
相关文章
- ·session 的工作原理与session用法 (2013-11-12)
- ·PHP创建和使用session cookie变量(2013-11-13)
- ·cookie和session 区别(2013-11-14)
- ·PHP 会话(session 时间设定)使用入门 (2013-11-14)
- ·关于使用session_start 出现的headers (2013-11-27)
- ·session Cannot send session cache limiter 错误提示(2013-11-28)
- ·session_start() [function.session-start]: Cannot send session cookie(2013-11-29)
- ·Warning: session_destroy() [function.session-destroy]: Trying to destroy(2013-11-29)
- ·php中session引起错误问题集锦(2013-11-30)
- ·php session永不过期的设置方法(2013-11-30)
- ·PHP中session共享和登录验证的实现方法(2013-12-02)
- ·php中session超时严格控制实例(2013-12-02)
- ·PHP中header和session_start前不能有输出的原因(2013-12-03)
- ·Deprecated: Function session_register() is deprecated(2013-12-04)
- ·Warning: session_start() [function.session-start](2013-12-04)
- ·php中IE7 iframe session丢失问题解决方案(2013-12-04)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)