会话未得到维护

时间:2013-11-02 19:29:21

标签: php

我有一个简单的身份验证:您登录login.php页面,然后重定向到home.php页面。

这是login.php的代码:

if(pg_num_rows($rs) == 0){ //I search in db for a row with username and password
        $errMess = "error";
        pg_close($conn); 
    }else{
        $row = pg_fetch_row($rs);
        session_start(); 
        $_SESSION['username']=$_POST["nick"];
        $_SESSION['admin'] = $row[0];
        pg_close($conn); 
        header("Location: /home.php");
    }

现在在家中我以这种方式完成了标题:

<?php require_once("scripts/functions.php"); 
      require_once("scripts/config.php");
      session_start(); 
?>
 <div id="siteHeader" class="headersLeft"><?php echo WELCOME;?></div>
        <div id="userContainer" class="headersRight"> 

            Logged as: <?php echo getDisplayName(); ?>
            <?php if(isset($_SESSION['username'])) {?>
                <button class="button" onclick="location.href='/logout.php';">logout</button>
            <?php }else{ ?>
                <button class="button" onclick="location.href='/login.php';">login</button>
            <?php }
            ?>
        </div>

它不起作用:即使数据是正确的,它仍然给我“访客”,会话变量在标题段落中丢失。如何来?

4 个答案:

答案 0 :(得分:1)

解决:我在Windows下,临时文件夹的默认路径,其中php实际上保存了会话文件,是错误的:是“/ tmp”并且无法识别。 我将它设置为“C:\ php \ tmp”并且它有效:会话文件根本没有保存!

答案 1 :(得分:0)

写session_start();在一切之上(紧随其后)

<?php 
session_start(); 
require_once("scripts/functions.php"); 
require_once("scripts/config.php");
?>

或者如果仍然不起作用,那么编写如下代码:

<?php 
ob_start();
session_start(); 
require_once("scripts/functions.php"); 
require_once("scripts/config.php");
?>

另外,不要忘记将这两行放在login.php页面的顶部。 希望它有所帮助:)

答案 2 :(得分:0)

我猜在继续操纵if的{​​{1}}语句后面还有更多代码。这就是为$_SESSION分配$_SESSION['username']值的地方。

请记住,'guest'仅设置响应标头。 它不会立即重定向,停止脚本执行

header("Location: /home.php");之后放置一个exit;命令,以防止执行到达其余代码:

header()

答案 3 :(得分:0)

这对我有用:

session_save_path ( "" ) ;  
session_start();