【问题标题】:session php not working [duplicate]会话php不起作用[重复]
【发布时间】:2018-05-31 06:22:05
【问题描述】:

我有一个代码,但有问题。这是一个登录表单,用于检查用户并通过,如果没问题,它将创建一个会话。在另一个页面中,它将检查会话登录是否与真相反。如果是真的,它将登录。 问题是当用户想要登录时,他/她需要提交登录表单 2 次才能进入站点。 有什么问题?

<form method="post" attribute="post" action="test.php">
<p>Username<br/>
<input type="text" id="user" name="user" class="form-control" required></p>
<p>Password<br/>
<input type="text" id="pass" name="pass" class="form-control" required></p>
<p></p>
<button type="submit" name="sub2" id="sub" value="sub" class="btn btn-default btn-block">Login</button>
</form>
<?PHP
    include 'config.php';
    $user = $_POST["user"];
    $pass=$_POST["pass"];

    if (isset($_POST['user']) and isset($_POST['pass']))
    {
        $conn = new mysqli($servername, $username, $password, $dbname);
        $result = $link->query("SELECT user FROM users2 WHERE user = '$user'");
        $userpass = $link->query("SELECT pass FROM users2 WHERE user = '$user'");
        $row = $userpass->fetch_assoc();
        $userpasss = $row["pass"];
        if($result->num_rows == 1 and $pass == $userpasss)
        {
            session_start();
            $_SESSION["login"] = true;
            $_SESSION["username"] = "$user";
            echo "hello";
        }
    }
?>
<?PHP
    session_start();
    echo $_SESSION["login"];
    echo $_SESSION["username"];
?>

任何帮助表示赞赏。 谢谢 热烈的问候

【问题讨论】:

  • 你在session_start()之前有输出现在打开错误,这样你就可以正确调试了。然后修复 SQL 注入问题
  • 请注意,您的代码对于SQL injection 来说是易受攻击的。您应该使用prepared statements 来防止这种情况。还要确保您的数据库用户只有required privileges。您可以参考this post 了解有关如何防止 PHP 中的 SQL 注入的更多信息 :)
  • 另外,您的变量$userpasss 与您的变量$userpass 不同。而且我真的希望您不要以明文形式存储密码,根据您的条件,这似乎是这种情况。
  • 感谢您的所有 cmets。 $userpasss = $row["pass"];. $userpasss 是具有用户密码的变量。这是我使用的简单版本。我只是想找出错误
  • 你为什么要用 2 个查询来运行它?您可以一次性完成。

标签: php session login


【解决方案1】:

试试这个代码:

$_SESSION["username"] = $user;

它应该可以工作

【讨论】:

  • 这和他拥有的完全没有区别。并没有解决问题。
  • 我不知道为什么,但是在这个改变之后它起作用了!可能是我打字的时候搞错了。不确定。无论如何,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-09
  • 1970-01-01
  • 2012-07-14
  • 2016-12-01
  • 2013-02-09
  • 2014-02-08
相关资源
最近更新 更多