PHP没有读取会话ID

时间:2016-07-16 23:04:08

标签: javascript php ajax session

在我的网页上,我有一个创建会话的登录表单 - 但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'); 

正在制作:

  

NULL
  string(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则重新加载页面 - 它会这样做)

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

1 个答案:

答案 0 :(得分:1)

将它放在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将调用open和read会话保存处理程序。这些将是默认提供的内置保存处理程序或PHP扩展(如SQLite或Memcached);或者可以是session_set_save_handler()定义的自定义处理程序。读取回调将检索任何现有的会话数据(以特殊的序列化格式存储),并且将被反序列化并用于在读取回调将已保存的会话数据返回到PHP会话处理时自动填充$ _SESSION超全局。

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