繁体   English   中英

练习使用session_start()

[英]Practice to use session_start()

我应该使用

session_start()

要么

if (session_id() == ""){
  session_start();
}

因为我没有记错,没有后者,还会出现另一条错误消息?

PHP> = 5.4.0版本的推荐方法

if (session_status() == PHP_SESSION_NONE) {
    session_start();
}

资料来源: http : //www.php.net/manual/en/function.session-status.php

对于PHP <5.4.0版本

if(session_id() == '') {
    session_start();
}

两者都应该满足您的要求。

我这样做是为了阻止会话劫持。 然后只需在每个页面的开头调用该函数。

public function start_session()
{
    session_start();

    if (rand(1, 10) == 5)
    {
        session_regenerate_id();
    }
}

好的做法是始终将session_start()放在代码的开头,无论遇到什么情况。

来自session_id()的官方PhP文档:

session_id()返回当前会话的会话ID,如果没有当前会话(不存在当前会话ID),则返回空字符串(“”)。

这是一个如何检查现有的session_id()的示例:

session_start();

if( empty(session_id()) ) {
    session_id();
}

始终从文档中获取:

session_id()用于获取或设置当前会话的会话ID。

如php手册所述, session_create函数将创建一个新会话,或者如果您已经创建了一个会话,返回当前会话 因此,无需检查是否存在会话。 如果仍然要检查,我建议使用Flux Coders方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM