PHP文件无法跨页面恢复会话变量

时间:2013-06-02 06:32:26

标签: php session post

Okai,所以我试图稍早发布一下,虽然我的问题略有改变。 我已经确定了我的login.php(我分配$ _SESSION值)和我的members.php页面之间的问题(我尝试再次获取$ _SESSION变量,但无法恢复它)。我发现这个问题的方法是在我的members.php文件中运行一个var转储,它给了我0.我在login.php中设置了值之后也做了这个,我得到了asigned值作为结果。 如果你帮助我,我会非常感激!

这是我的login.php页面:

<?php
session_start();
require('connect.php');

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

if (isset($username) && isset($password))
{
    $query = mysql_query("SELECT * FROM login WHERE username='$username' AND password='$password'");
    $result = mysql_num_rows($query);

    if($result > 0)
    {
        echo "You have been logged in. <a href='members.php'>Go to the members page</a>";
        $username = $_SESSION['login'];
    }
    else
    {
        echo "Password is incorrect. Try again.";
    }
}
else
{
    echo "You have to enter your username and password. Try again";
}
?>

这是我的members.php页面:

<?php
session_start();

if (isset($_SESSION['login']))
{
    echo "Welcome " .  $login . " | <a href='logout.php'>Logout</a>";
}
else
{
    header('Location: index.php');
}

?>

2 个答案:

答案 0 :(得分:0)

您的会话“登录”变量未设置,因为您从未在登录文件中设置它...

你应该专门用$ _SESSION ['login'] =“blah”;

设置它

我认为您的问题是您在登录用户时设置登录而不是用户名... 交换

if($result > 0)
    {
        echo "You have been logged in. <a href='members.php'>Go to the members page</a>";
        $username = $_SESSION['login'];
    }

if($result > 0)
    {
        echo "You have been logged in. <a href='members.php'>Go to the members page</a>";
        $_SESSION['login'] = $username;
    }

然后您应该能够从您的成员页面访问“登录”会话变量。

同样在您的会员页面上,我没有看到您设置$ login变量。所以我假设这将是一个空白区域,你打算用$ _SESSION ['login']回显你的会话登录变量。

答案 1 :(得分:0)

在聊天中解决:

  1. 结果var_dump(is_writable(session_save_path()));返回bool(false)

  2. session_save_path()/var/php_sessions/

  3. realpath(dirname(__FILE__));/hermes/bosoraweb124/b185/dom.gjertgjersundcom/public_html

  4. 我尝试移动会话保存路径 - 但由于某种原因,public_html中的文件夹无法写入,与读取相同(无法读取)。无论如何,在公共文件夹中放置sessions是一个坏主意,无论如何都要让每个人都能看到。

    我建议OP与其主机提供商联系,以运行chmod 766 -R /var/php_sessions/

    命令

    解决:他的webhost的工作人员应用了权限,现在工作正常。