热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

session与cookie会话控制

1PHP的COOKIEcookie是一种在远程浏览器端储存数据并以此来跟踪和识别用户的机制。PHP在http协议的头信息里发送cookie,因此setcookie()函数必须在其它信息被输出到浏览器前调用,这和对header()函

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攻击。例子:

  1.  
  2.         $value = 'something from somewhere';  
  3.         setCOOKIE("TestCOOKIE"$value);  
  4.         setCOOKIE("TestCOOKIE"$value, time()+3600);  
  5.         setCOOKIE("TestCOOKIE"$value, time()+3600, "/~rasmus/"".example.com", 1);  
  6.         ?> 

设置多个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文件。

推荐阅读
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 阿里云 Aliplayer高级功能介绍(八):安全播放
    如何保障视频内容的安全,不被盗链、非法下载和传播,阿里云视频点播已经有一套完善的机 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • 七款高效编辑器与笔记工具推荐:KindEditor自动换行功能解析
    本文推荐了七款高效的编辑器与笔记工具,并详细解析了KindEditor的自动换行功能。其中,轻笔记QingBiJi是一款完全免费的记事本软件,用户可以通过其简洁的界面和强大的功能轻松记录和管理日常事务。此外,该软件还支持多平台同步,确保用户在不同设备间无缝切换。 ... [详细]
  • CRZ.im:一款极简的网址缩短服务及其安装指南
    本文介绍了一款名为CRZ.im的极简网址缩短服务,该服务采用PHP和SQLite开发,体积小巧,约10KB。本文还提供了详细的安装步骤,包括环境配置、域名解析及Nginx伪静态设置。 ... [详细]
  • 深入理解:AJAX学习指南
    本文详细探讨了AJAX的基本概念、工作原理及其在现代Web开发中的应用,旨在为初学者提供全面的学习资料。 ... [详细]
  • HTML:  将文件拖拽到此区域 ... [详细]
  • 本文详细记录了腾讯ABS云平台的一次前端开发岗位面试经历,包括面试过程中遇到的JavaScript相关问题、Vue.js等框架的深入探讨以及算法挑战等内容。 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • Amoeba 通过优化 MySQL 的读写分离功能显著提升了数据库性能。作为一款基于 MySQL 协议的代理工具,Amoeba 能够高效地处理应用程序的请求,并根据预设的规则将 SQL 请求智能地分配到不同的数据库实例,从而实现负载均衡和高可用性。该方案不仅提高了系统的并发处理能力,还有效减少了主数据库的负担,确保了数据的一致性和可靠性。 ... [详细]
  • 本文深入探讨了Ajax的工作机制及其在现代Web开发中的应用。Ajax作为一种异步通信技术,改变了传统的客户端与服务器直接交互的模式。通过引入Ajax,客户端与服务器之间的通信变得更加高效和灵活。文章详细分析了Ajax的核心原理,包括XMLHttpRequest对象的使用、数据传输格式(如JSON和XML)以及事件处理机制。此外,还介绍了Ajax在提升用户体验、实现动态页面更新等方面的具体应用,并讨论了其在当前Web开发中的重要性和未来发展趋势。 ... [详细]
  • 如何高效利用Hackbar插件提升网页调试效率
    通过合理利用Hackbar插件,可以显著提升网页调试的效率。本文介绍了如何获取并使用未包含收费功能的2.1.3版本,以确保在不升级到最新2.2.2版本的情况下,依然能够高效进行网页调试。此外,文章还提供了详细的使用技巧和常见问题解决方案,帮助开发者更好地掌握这一工具。 ... [详细]
author-avatar
雪灵女子_826
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有