我的登录代码第一次无法运行?第二次呢?

时间:2016-12-31 15:52:00

标签: php session

我的登录代码有点问题,当我尝试登录时,它第一次无法正常工作。我不知道我做错了什么,但第一次它总会给我错误,这里是代码(评论是荷兰语):

    <?php
        if(isset($_POST['login'])){

            $username = $_POST['username'];
            $password = $_POST['password'];
            //Maakt de variables korter, en beschermt ze tegen sql injectie d.m.v. real_escape
            $gb = mysqli_real_escape_string($con, $_POST['username']);
            $password = mysqli_real_escape_string($con, $_POST['password']);

            //Deze maakt de wachtwoord en salt 1 Dat zorgt ervoor als je database
            //ooit wordt gehackt, ze niet je klanten hun wachtwoord hebben.
            $ww1 = $password.$salt;

            //Deze encrypt het nieuwe wachtwoord, dus bijv stel het wachtwoord is lol123 en je salt is abc123
            //dan is het wachtwoord lol123abc123
            $ww = sha1($ww1);

            //Vergeet niet de tablenaam medewerkers aan te passen naar jou shit.
             //Dit is de query
            $select_user = "SELECT * FROM users WHERE username='$gb' AND password='$ww'";

            //Deze zin runned de query daadwerkelijk
            $run_user = mysqli_query($con, $select_user);

            //Deze kijkt hoeveel ROWS er terugzijn gekomen, als het meer dan 1 is klopt het dus.
            $check_user = mysqli_num_rows($run_user);
                if($check_user>0){
                    session_start();
                        $_SESSION['username'] = "$gb";
                            echo "<script>{location.href = 'home.php'; };</script>";
                    }else {
                        echo "<p> Gegevens kloppen <b>niet!</b></p>";
                 }
            }
        ?>

这是登录页面的代码^。

这是主页的代码,它将在登录后进入:

    <?php
session_start();
$username = $_SESSION['username'];
if(strlen($username) < 1){
    die('Error');
}
?>

我真的不知道什么是错的

1 个答案:

答案 0 :(得分:1)

正如我在评论中所说,你需要先启动会议,然后在发生任何事情或意图发生之前将其置于最前面。

所以在你的第一个文件中:

<?php 
session_start();

// rest of your code.

并检查会话是否已设置。

您还应该使用准备好的声明和password_hash()。如果你现在或正在使用此代码,那么你现在的代码并非真的可以安全使用。

参考文献:

  

&#34;但这会影响2次登录吗?&#34;

是的,这很重要。这里发生的事情是,当您加载登录页面时,由于其位置/位置,会话未启动。

只要您重新加载它,因为用户已登录并且会话数组已设置/非空,会话就已启动,因为它已包含在该文件中,只是向下。

  • 它的位置很重要。

您还应该创建一个注销文件并销毁会话。

否则,可能会产生不利影响。