2013-03-07 70 views
0

在logout.php是所有需要将用户从网站登录时,在注销页面上销毁它之前启动会话需要吗?

session_destroy(); 

还是应

session_start(); 
session_destroy(); 

我很担心,如果用户直接导航到该页面有可能是破坏了会话的错误如果还没有创建。另一方面session_destroy()会破坏上面一行中创建的会话吗?

+0

你也应该走出注销用户时重新生成会话ID的进一步细节。 – kapa 2013-03-07 00:21:49

+0

@bažmegakapa你确定在注销时会发生这种情况吗?第一个用户提供的注释称在登录后调用'session_regenerate_id(true)'。http://php.net/manual/en/function.session-destroy.php – Celeritas 2013-03-07 01:31:41

+0

当用户的权限更改时,您应该始终重新生成会话ID (登录或退出都是很好的例子)。 – kapa 2013-03-07 01:33:24

回答

1

您不需要首先调用session_start()... session_destroy()将在服务器上完全删除一个会话,因此事先调用session_start()可能会导致额外的处理来创建一个会话,只会将其销毁一行后来。

我会建议看在man page关于清除任何相关联的Cookie /会话超全局

+0

这个文件在这个问题上有点不清楚;我最好的猜测是,如果你没有调用'session_start()',不需要'$ _SESSION = array();'但是它也不会伤害。 – 2013-03-07 01:27:14

+0

没有它我得到错误“试图销毁未初始化的会话” – Celeritas 2013-03-19 20:22:53