PHP中SESSION的注销与清除

PHP中SESSION的注销与清除,第1张

1、每个页面都必须开启session_start()后才能在每个页面里面使用session。

2、session_start()初始化session,第一次访问会生成一个唯一会话ID保存在客户端(是基于cookie保存的),用户下次访问时,session_start()会检查有没有会话ID,如果有浏览器会带着这个会话ID过来(通过发送头文件传过来的,这个可以用ff浏览器看到)来确定客户端。

3、给于cookie的session会在客户端保存一个会话ID即session_id,这个可以通过打印cookie看到,这个session_id的键值为session_name,

session_id()

==

$_COOKIE[session_name()]

4、如果客户端禁用了cookie,则必须用url传递session_id即给予URL的SESSION

5、注销SESSION时不能用unset($_SESSION),可以使用$_SESSION

=

array()或则$_SESSION

=

null,正确注销session的方法如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

//正确的注销session方法:

//1开启session

session_start()

//2、清空session信息

$_SESSION

=

array()

//3、清楚客户端sessionid

if(isset($_COOKIE[session_name()]))

{

setCookie(session_name(),'',time()-3600,'/')

}

//4、彻底销毁session

session_destroy()

相关栏目

电脑编程

php教程

asp教程

asp.net教程

jsp教程

javascript教程

编程语言综合

编程开发

ios开发

oracle教程

mysql教程

mssql教程

access教程

安卓软件开发

session_destroy()//清空以创建的所有SESSION

session_unset("session_name")//清空指定的session

unset($_SESSION["name"])//清空指定的session

session_destroy() 销毁当前会话中的全部数据, 但是不会重置当前会话所关联的全局变量, 也不会重置会话 cookie。

上面一段是PHP手册中的内容

我来总结一下的话,就是你执行session_destroy()不会重置当前会话中的SESSION内容

所以需要用第二部对当前会话进行SESSION重置

否则,你在session_destroy之后还是能够取得SESSION数据的

当然,根据手册,上面还少了一步如下:

if (ini_get("session.use_cookies")) {

    $params = session_get_cookie_params()

    setcookie(session_name(), '', time() - 42000,

        $params["path"], $params["domain"],

        $params["secure"], $params["httponly"]

    )

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11962768.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存