热门标签 | 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文件。

推荐阅读
  • 本文详细介绍了在Ubuntu 7.10操作系统上安装多种常用软件的方法,包括RAR压缩工具、即时通讯软件Pidgin、办公软件永中Office 2007试用版、多线程下载软件MultiGet及d4x、FTP客户端gFTP与FireFTP插件,以及P2P下载工具aMule。每部分都提供了具体的安装步骤和配置方法。 ... [详细]
  • KKCMS代码审计初探
    本文主要介绍了KKCMS的安装过程及其基本功能,重点分析了该系统中存在的验证码重用、SQL注入及XSS等安全问题。适合初学者作为入门指南。 ... [详细]
  • 开发笔记:新手DVWACSRF
    开发笔记:新手DVWACSRF ... [详细]
  • SonarQube配置与使用指南
    本文档详细介绍了SonarQube的配置方法及使用流程,包括环境准备、样本分析、数据库配置、项目属性文件解析以及插件安装等内容,适用于具有Linux基础操作能力的用户。 ... [详细]
  • Pikachu平台SQL注入漏洞详解
    本文详细介绍了SQL注入漏洞的基本原理、攻击流程、不同类型注入点的识别与利用方法,以及基于union联合查询、报错信息、布尔盲注、时间盲注等多种技术手段的信息获取方式。同时,探讨了如何通过SQL注入获取操作系统权限,以及HTTP Header注入和宽字节注入等高级技巧。最后,提供了使用SQLMap自动化工具进行漏洞测试的方法和常见的SQL注入防御措施。 ... [详细]
  • 本文详细介绍了跨站脚本攻击(XSS)的基本概念、工作原理,并通过实际案例演示如何构建XSS漏洞的测试环境,以及探讨了XSS攻击的不同形式和防御策略。 ... [详细]
  • 2023年1月28日网络安全热点
    涵盖最新的网络安全动态,包括OpenSSH和WordPress的安全更新、VirtualBox提权漏洞、以及谷歌推出的新证书验证机制等内容。 ... [详细]
  • 本文介绍了解决在Windows操作系统或SQL Server Management Studio (SSMS) 中遇到的“microsoft.ACE.oledb.12.0”提供程序未注册问题的方法,特别针对Access Database Engine组件的安装。 ... [详细]
  • 近期,谷歌公司的一名安全工程师Eduardo Vela在jQuery Mobile框架中发现了一项可能引发跨站脚本攻击(XSS)的安全漏洞。此漏洞使得使用jQuery Mobile的所有网站面临潜在的安全威胁。 ... [详细]
  • 探讨了在使用Layui框架时,如何处理表格中固定列与其他列行高不一致的情况,提供了有效的解决方案。 ... [详细]
  • API网关作为微服务架构中的关键组件,扮演着系统与外部世界交互的唯一接口角色。它不仅封装了系统的内部复杂性,还为不同客户端提供了个性化的API接口。本文将探讨API网关的重要性及其核心功能。 ... [详细]
  • 本文探讨了XSS攻击的基本原理及其防御方法,重点介绍了如何在前后端实施有效的安全措施来防止XSS攻击。 ... [详细]
  • Mario Peshev,自1999年起从事编程工作,现任DevriX首席执行官。本文最初发布于Quora,探讨了计算机技术与编程语言的区别及其对软件开发的影响。 ... [详细]
  • Python与MySQL交互指南:从基础到进阶
    本文深入探讨了Python与MySQL数据库的集成方法,包括数据库连接、数据表创建、索引管理、数据操作以及如何防止SQL注入等关键内容。适合初学者及希望提升数据库操作技能的开发者。 ... [详细]
  • 在Fedora 31上部署PostgreSQL 12
    本文详细介绍如何在Fedora 31操作系统上安装和配置PostgreSQL 12数据库。包括环境准备、安装步骤、配置优化以及安全设置,确保数据库能够稳定运行并提供高效的性能。 ... [详细]
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社区 版权所有