Php通过会话在其他页面上使用变量

时间:2014-11-11 17:03:52

标签: php html login session-variables

大家好,我有php会话的问题。我尝试从我的第二页发送一个变量到我的第三页,但我一直得到未定义的变量我将包括来自所有三个页面的代码我很抱歉提前为相当大量的代码,但我相信它会更容易你们然后帮助。提前致谢

第1页

<form method="POST" action="authorize.php">
            <input type="text" name="username" class="username"><br>
            <input type="password" name="password" class="password"><br>
            <label for ="remeberMe">Remember me!</label>
            <input type="checkbox" name="remeberMe" class="rememberMe"><br>
            <input type="submit" name="submitLogin" class="submitLogin" value="Login!">
        </form>

第2页

    session_start();
    include 'connection.php';

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

    $sql = mysqli_query($con, "SELECT * FROM users WHERE screename = '$user' AND ...");
    $count = mysqli_num_rows($sql);

    if ($count == 1)
    {
        $login = true;
    }
    else
    {
        $login = false;
    }   

    if ($login == true)
    {
        $_SESSION['access'] = true;
        $_SESSION['username'] = $_POST['username']; 
        header("Location:"."mainpage.php?".SID);
        exit;
    }   
    else 
    {
        header("Location:"."index.php?");
        exit;
    }   

第3页

    session_start();

    if($_SESSION['access'] != true)
    {
        include("index.php");
        exit;
    }

    if(isset($_POST['username']))
    {
        $user = $_POST['username'];
    }
第3页的

错误: $user未定义

3 个答案:

答案 0 :(得分:2)

您正在访问POST变量而不是您在会话中保存的变量。改为:

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

答案 1 :(得分:1)

未定义的变量,您是指第3页的$ _POST ['用户名']还是会话变量? post变量不会保留在第3页中,您需要引用会话变量$ _SESSION ['username']。

答案 2 :(得分:1)

首先,您必须使用LIMIT 1限制SQL语句,或将此条件更改为>=

if ($count == 1) //'>='
{
    $login = true;
}
else
{
    $login = false;
}   

之后你必须在第3页更改为$_SESSION数组:

if(isset($_POST['username'])) //to `$_SESSION['username']`
{
    $user = $_POST['username']; //to `$_SESSION['username']`
}