2016-12-31 128 views
1

我在登录代码时出现了一些问题,当我尝试登录时第一次无法运行。我不知道我在做什么错,但它第一次将永远给我的错误,这里的代码(评论是在荷兰):我的登录代码第一次不工作?第二次呢?

<?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

你正在做几件事情错误......使用'escape_string'而不是准备好的查询,使用'sha1'而不是'password_hash' /'password_verify'等等。 –

+0

在发生任何事情或意图发生之前,您应该在第一个文件中启动会话。还要检查会话是否已设置。 –

+0

但这是否会影响登录次数2次? – FluffyMe

回答

1

正如我在注释中规定,你需要启动会议首先在任何事情发生或意图发生之前置于顶端。

因此,在您第一个文件:

<?php 
session_start(); 

// rest of your code. 

,并在会话设置检查。

您还应该使用准备好的声明和password_hash()。你现在的代码并不是真正安全的,如果你正在上线或者与此同时生活。

参考文献:


“但这种影响2次登录的事情吗? “

是的,它确实很重要。这里发生的事情是,由于您的位置/位置,您在加载登录页面时未开始会话。

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

  • 它的位置很重要。

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

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

+0

即时通讯只是尝试的东西,但thnx帮助男人! – FluffyMe

+0

@FluffyMe不客气,*新年快乐* –

+0

你对男人:D – FluffyMe

相关问题