PHP 不读取会话 ID


PHP not reading session id

在我的网页上,我有一个创建会话的登录表单 - 但PHP似乎没有承认它:

require_once('globals.php');
require_once('header.php');
if(!isset($_SESSION) || session_id() == '')
{
    $x = (isset($_SESSION));
    var_dump($_SESSION['username']);
    ?><br><?PHP
    var_dump(session_id());
    ?><br><?PHP
    var_dump($x);
    require_once('system/default.php');     
}
else
{
    require_once('system/' . $SystemScreens[$_SESSION['screen']]);
}
require_once('footer.php'); 

正在生产:


字符串(0) "
布尔值(假)


登录脚本的相关部分(其中$finalCheck是一个布尔值,说明登录是否成功)

if($finalCheck)
    {
        session_start();
        $_SESSION['userID']         = $UserID;
        $_SESSION['username']           = $username;
        $_SESSION['accessLevel']        = $UserAccess;
        $_SESSION['screen']         = 1;
    }
    else
    {
        if(session_id() != '' || isset($_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"]);
            }
            session_destroy();
        }
    }

我知道登录函数返回true因为我有视觉确认(结果返回到 AJAX 请求,如果为 true,则重新加载页面 - 确实如此)

我无法弄清楚为什么一切都像登录成功一样运行,但在重新加载发生后无法识别会话?

把它放在你的 PHP 开始标记之后

  <?php
  session_start();
  //... your code....

  //more code....  

基本会话示例

   <?php
       session_start();
       echo 'Welcome to page #1';
       $_SESSION['favcolor'] = 'green';
       $_SESSION['animal']   = 'cat';
       $_SESSION['time']     = time();
      // Works if session cookie was accepted
      echo '<br /><a href="page2.php">page 2</a>';
     // Or maybe pass along the session id, if needed
       echo '<br /><a href="page2.php?' . SID . '">page 2</a>';
     ?>

session_start() 根据通过 GET 或 POST 请求传递或通过 cookie 传递的会话标识符创建会话或恢复当前会话。

当调用 session_start() 或会话自动启动时,PHP 将调用打开和读取会话保存处理程序。这些将是默认提供的内置保存处理程序,也可以是 PHP 扩展(例如 SQLite 或 Memcached)提供的内置保存处理程序;也可以是 session_set_save_handler() 定义的自定义处理程序。读回调将检索任何现有的会话数据(以特殊的序列化格式存储),并且将被取消序列化,并在读回调将保存的会话数据返回到 PHP 会话处理时自动填充 $_SESSION 超全局。

获取更多信息 : http://us3.php.net/function.session-start