PHP COOKIE和SESSION操作

PHP COOKIE和SESSION操作

COOKIE

COOKIE概述

1,什么是COOKIE
    COOKIE 就是服务器暂时存放在你的电脑里的资料(.txt格式的文本文件),好让服务器辨认你的计算机
    
    cookie是由服务器段生成,发送给user_agent(一般是浏览器),浏览器会将cookie的key/value保存
    到某个目录的文本文件内,下次请求同一网站时就发送改cookie给服务器
    
   
    
2,IE浏览器查看COOKIE数据 
    工具栏菜单>>internet选项>>常规选项卡>>浏览器历史记录>>设置>>查看文件

3,使用cookie的好处
    存放必要性信息
    
    跟踪统计用户访问网站的习惯,什么时间访问,访问了哪些页面,页面停留时间等
        为用户提供个性化服务,为网站营销提供参考

4,cookie的工作原理
    我的电脑(客户端)               百度网(服务器段)
    写入相应的                                       
    cookie数据       http请求->     向浏览器发送存储cookie指令
                
                <-http应签(第一次)指令
                    存储cookie
    cookie数据
    name=admin
    pass = 123456                
                    
    读取cookie数据    http请求->            
    并发送到服务器     携带cookie数据      获取并验证浏览器发送的cookie数据
                
                <-http响应(第二次)

COOKIE操作

1,添加cookie数据
    向客户端发送一个http cookie
    bool setcookie($name,$value,$expire=0,$path,$domain,$secure=false,$httponly=false)
    
    $name:cookie的名称
    $value:cookie的值
    $expire:cookie的有效期
    $path:cookie的服务器路径
    $secure:规定是否通过安全的https连接来传输cookie
    
    设置成功返回true
    
2,读取cookie数据
    获取cookie数据是通过超全局数组$_COOKIE来实现的
    value = $_COOKIE[key];

COOKIE设置

1,cookie过期有效性设置
    1,即时性cookie设置
        默认cookie的有效期时关闭浏览器时自动失效,
        bool setcookie($name,$value,$expire=0)
        $expire 指定cookie保存的时间,默认为0,关闭浏览器失效
    
    2,有效性cookie设置
        bool setcookie($name,$value,$expire)
        $expire为一个时间戳,一般用time()+N表实新的时间戳,在当前时间点
                再加上N秒,产生一个新的时间戳
            
        持久性cookie
        
2,cookie路径有效性
    设置cookie只能在指定的目录及其子目录下有效
    bool setcookie($name,$value,$expire=0,$path)
    
    访问不同的页面,携带针对性的cookie
    
3,cookie域名有效性
    给一个cookie指定访问的域名
    setcookie($name,$value,$expire,$path,$domain)
    
    提示:默认情况下,cookie只能在当前域名下有效

4,是否仅htps安全连接才能发送cookie
   bool setcookie($name,$value,$expire=0,$path,$domain,$secure=false)


5,是否只能通过http协议来使用cookie
    客户端的cookie除了可以通过http之外,还可以使用js来使用cookie
    bool setcookie($name,$value,$expire=0,$path,$domain,$secure=false,$httponly=false)

删除cookie数据

1,设置cookie有效性为过去的某个一时间
    setcookie($name,$value,expire);       
    setcookie("username","admin",time()-1)
    
2,设置cookie的值为false 或空字符串
    setcookie($name,false)
    setcookie($name,"")
    
3,不设置cookie 的值

4,清理浏览器缓存

cookie总结

不安全
容量小,大约4kb
数据类型只能是字符串
浏览器可禁用cookie

SESSION

SESSION概述

1,什么是session
    session 对象存储特定用户的会话数据
    session 将会话数据存储在服务器端
    session 是基于cookie 技术的
    session 在整个用户的会话中,一直存在下去
    一个用户会话时效,从用户登录开始,到用户登录结束
    session 存储的数据量要比cookie大得多
    session 存储的内容类型,不限于字符串
    session 数据存储在服务器端,更安全更可靠

2,session的工作原理
    
    浏览器端                服务器段
    
            http请求->    php脚本引擎
                            
                            session
    cookie数据区             会话数据区
    session标识符<-http响应   session-id
    phpsessionid=...        session数据

3,开启session会话功能
    启动新会话或者重用现有会话
    bool session_start(void)
    提示:$_SESSION 变量默认是不存在的,与$_POST,$_GET,$_FILE不同
        必须先开启session会话,才能使用$_SESSION变量
    
        每个需要session数据的页面,都要开启SESSION功能
    注意:SESSION功能,不能重复开启,(同一个页面不能开两次)
    返回:成功开始会话返回TRUE,反之返回FALSE
    
    提示:session文件的保存位置:c:\window\temp

session 操作

1,添加session数据
    $_SESSION[key]=value
    
    一个网站不管添加多少个SESSION数据,最终在浏览器只存储一个SESSION的ID值
    该ID值是经过加密的,并且永不重复key只能是string类型的数据
    
    session 文件在服务器端的存储位置:c:\window\temp

2,读取SESSION数据   
    $value = $_SESSION[key]
    提示:每次SESSION操作,都要先开启SESSION功能

3,删除SESSION数据
    使用unset()函数,删除一个SESSION数据

4,销毁SESSION文件
    删除当前的session文件,不影响其他的session文件
    bool session_destroy(void)

SESSION对应COOKIE的配置

 1,SESSION 对应COOKIE过期时间设置
    修改php.ini配置项,session_cookie_lifetime        
    
 2,SESSION对应COOKIE有效路径设置
    修改php.ini配置项,session.cookie_path
    
 3,SESSION对应COOKIE域名有效性设置
    修改php.ini配置项:session.cookie_domain
    
 4,是否仅限https来发送SESSION对应的COOKIE数据
    修改php.ini配置项:session.cookie_secure
    
 5,是否仅限http来使用SESSION对应的COOKIE数据
    修改php.ini配置项:session.cookie_httponly

SESSION垃圾回收机制

1,什么是SESSION的垃圾回收机制
    SESSION垃圾回收,就是将过期的SESSION服务器文件删除的机制
    SESSION会自动删除那些过期的服务器端session数据区文件

    修改php的配置文件php.ini

2,垃圾回收的周期:session.gc_maxlifetime
    在php.ini中的值 默认是 1440s,也就是24分钟
    没24分钟,清理一次session垃圾文件
    
3,垃圾回收的概率:session.gc_divisor

    回收概率:分子/分母得到一个百分比,达到100%就清理,
            1/1000,每1000人访问,才会清理一次
            
    回收周期和回收概率混合使用
        先看有没有达到24分钟,然后查看访问人数是否满足要求
        若满足,则清理

总结

cookie和session如果从数据存储的角度上来书,和小程序中的全局变量有类似的地方,比如:
	存储用户的登录信息
	存储一些用到的全局数据 等
	
另外	sessionid 是具有唯一性的,其中session文件的存储也是需要注意的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值