标头重定向后丢失会话值

时间:2013-08-21 22:44:42

标签: php session

我正在使用$ _SESSION让我的用户在登录后登录。

当他们返回主页时,他们最初似乎已登录,但刷新页面一次后,他们就不再登录了。

注意:我还在学习PHP编程,所以请不要介意我的大多数代码都是相当的,noobish。

Index.php代码:

<?php
session_start();

$UserOnline = "Guest";

if (isset($_SESSION['username'])) {
    $UserOnline = $_SESSION['username'];
}


echo $UserOnline;
?>

Login.php代码:

<?php
session_start();

$username = $_POST['username'];
$password = $_POST['password'];

if (empty($username)) {
    $InvalidLogin = "Please submit a username";
    $_SESSION['IL'] = $InvalidLogin;
    header ('Location: http://localhost/practice/index.php');
    exit;
} elseif (empty($username)) {
    $InvalidLogin = "Please submit a password";
    $_SESSION['IL'] = $InvalidLogin;
    header ('Location: http://localhost/practice/index.php');
    exit;
}


require 'required/connect.php';

$result = mysqli_query($con, "SELECT * FROM users WHERE username='$username'");
$row = mysqli_fetch_array($result);

if ($password == $row['password']) {
    $_SESSION['username'] = $username;
    echo "Successful Login!";
    echo "<br>";
    echo "<a href='index.php'>Return to HomePage?</a>";
} else {
    $InvalidLogin = "Your info didn't match ours!";
    $_SESSION['IL'] = $InvalidLogin;
    header ('Location: http://localhost/practice/index.php');
    exit;
}


?>

我已经在login.php页面上测试过,如果用户在那里的会话中,我总是得到正确的返回值。问题是我在Index.php页面刷新一次后,用户不再在会话中。

有什么我忘了,或者我没有正确使用$ _SESSION?还有其他一些我根本不知道的错误吗?

2 个答案:

答案 0 :(得分:1)

在标题('location:.....')之后加退出; ,您的问题就会得到解决。

答案 1 :(得分:0)

问题已解决。在Index.php中发现错误。在if(isset($ _ SESSION ['username']))之前设置Variable $ UserOnline。感谢帮助人员