PHP会话问题 - 会话不会初始化?

时间:2015-09-28 11:52:28

标签: php session login

因此,我使用一个简单的登录脚本来处理几个页面,使用会话来识别用户,方法是将用户名放在$ _SESSION变量中,然后检查是否在每个页面上设置了变量。当我通过WAMP服务器在本地运行脚本时,这很好用 - 但是当我将它上传到webhotel时,我遇到了一个奇怪的问题。

login-script,如果用户名和密码与来自MySQL数据库的信息匹配,则设置$ _SESSION变量,不知何故不会启动会话。我有session_start();在每个页面的顶部,包括登录脚本,所以我不明白为什么它不会启动。

现在,我在这里找到了一个用于检查会话支持的脚本:

     <?php
      // Start Session
      session_start();
      // Show banner
      echo '<b>Session Support Checker</b><hr />';
      // Check if the page has been reloaded
     if(!isset($_GET['reload']) OR $_GET['reload'] != 'true') {
         // Set the message
         $_SESSION['MESSAGE'] = 'Session support enabled!<br />';
        // Give user link to check
        echo '<a href="?reload=true">Click HERE</a> to check for PHP Session Support.<br />';
       } 
       else {
          // Check if the message has been carried on in the reload
           if(isset($_SESSION['MESSAGE'])) {
            echo $_SESSION['MESSAGE'];
           }
           else {
             echo 'Sorry, it appears session support is not enabled, or you PHP version is to old. <a href="?reload=false">Click HERE</a> to go back.<br />';
            }
       }
   ?>

真正奇怪的是,这个脚本告诉我启用了会话支持 - 运行后,它突然在所有页面上运行。 因此,每次访问站点时都必须运行此脚本(在自己的文件中),因为如果不先运行此脚本,login-script将不会设置$ _SESSION变量。

只是要确定:我不是在问如何检查是否启用了会话支持;问题是为什么在我运行上面的脚本之后才启用会话。

为什么会发生这种情况,我该如何解决?

1 个答案:

答案 0 :(得分:1)

运行session_start()函数时会自动启动会话。要检查会话是否已设置,您不需要那么长的代码。试试这个。

   if(session_start())
   {
     echo session_id();
   }

如果会话已启动,则会打印会话ID。否则,它不会。