2016-12-31 184 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

相關問題