1

Okai,所以我试图早一点发布这个,尽管我的问题略有改变。我已经确定问题出在我的 login.php(我在其中分配 $_SESSION 值)和我的 members.php 页面(我尝试再次获取 $_SESSION 变量,但未能恢复它)之间。我发现这个问题的方法是在我的 members.php 文件中的 session 上运行 var dump,它给了我 0。我在 login.php 中分配了值之后我也这样做了,我得到了分配的值作为结果。如果您帮助我,我将非常感激!

这是我的 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');
}

?>
4

2 回答 2

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'] 来回显您的会话登录变量。

于 2013-06-02T06:58:52.423 回答
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

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

我建议 OP 联系他们的主机提供商以运行chmod 766 -R /var/php_sessions/.

已解决:他的虚拟主机的工作人员申请了权限,现在可以正常工作了。

于 2013-06-02T07:43:36.590 回答