zoukankan      html  css  js  c++  java
  • [PHP]session的一些要点

    一、session_start([array $options=array()])

    1.只能在输出http头前启动此函数,因为如果需要改写sessid的键和值,需要在http报文头发出前就开始定义了;

    2.$options有很多选项,包括设在sessid的键名(但是好像不包括设置值),sess CG启动频率,sess handler等等;

    二、session_name([string $name])

    1.读取或设置sess的键名;

    2.如果是设置,需要在调用session_start()之前;

    3.设置sess的键名后,即使不调用session_id()函数,一个由系统生成的新的session_id也会被设置;

    4.旧的sess cookie的键值对被废弃(此时浏览器还会保存旧的sess cookie的键值对,但是这个已经毫无用处了);

    三、session_id([string $id])

    1.读取或设置sess的值;

    2.如果是设置,需要在调用session_start()之前,否则会出现一种情况,调用session_start()后,包含旧的sess cookie的键值对的报文头已经生成,但是PHP进程中session_id()返回的值又被session_id()设置改变了,最终导致浏览器中的SESSID和PHP进程的SESSID不一致;

    3.通过此函数可以为两个客户端设置同一个sessID,从而共用一个会话;

    四、session_destroy()

    1.销毁服务器中当前SESSID保存的值;

    2.被销毁后的SESSID可以重用,例如销毁后浏览器依然保存着这个sess cookie的键值对,当浏览器重新请求带有session_start()的服务器脚本,服务器则重用这个SESSID,但是这相当于是一个新的SESSID,因为值在上一次访问时销毁了;

    3.运用这一特性,可以实现用户多地点登录把上一个登录踢下线的操作:找个持久性保存数据处保存用户每一次登录的SESSID,登录前先查看用户是否有上一次登录的SESSID,如果有先把这个SESSID销毁,然后再进行新的登录,新的登录产生的SESSID重写到保存用户每一次登录的SESSID处;

  • 相关阅读:
    prototype.js超强的javascript类库
    MySQL Server Architecture
    Know more about RBA redo block address
    MySQL无处不在
    利用Oracle Enterprise Manager Cloud Control 12c创建DataGuard Standby
    LAMP Stack
    9i中DG remote archive可能导致Primary Database挂起
    Oracle数据库升级与补丁
    Oracle为何会发生归档日志archivelog大小远小于联机重做日志online redo log size的情况?
    Oracle Ksplice如何工作?How does Ksplice work?
  • 原文地址:https://www.cnblogs.com/yiyide266/p/9712179.html
Copyright © 2011-2022 走看看