2016-01-13 151 views
0

我有一個登錄表單。我在我的數據庫表中有兩條記錄:admin和user。如果你登錄管理員,你必須去admin_area.php。這是行不通的,他總是用戶登錄。 如果您登錄,如果用戶這個工程。 腳本的第一部分不工作,不運行。php管理員和用戶帳戶不起作用

有人可以幫助我嗎? 在此先感謝。

<?php 
//first part: this is not working 
session_start(); 
//if (isset($_POST['submit'])) { 
$a_username = $_POST ['username']; 
$a_password = md5($_POST ['password']); 

if($a_username == "admin" && $a_password=="intel") 
{ 
    include 'connect.php'; 
    $sqli = "SELECT * FROM users WHERE username='$a_username' AND password='$a_password' "; 

    $numrows = mysqli_query($link, $sqli) or die(mysqli_error()); 

     $username = 'username'; 
     $password = 'password'; 

     //Add some stripslashes 
     $username = stripslashes($username); 
     $password = stripslashes($password); 

     //Check if username and password is good, if it is it will start session 
     if ($username == $a_username && $password == $a_password) 
     { 

      $_SESSION['username'] = 'true'; 
      $_SESSION['username'] = $username; 

      //Redirect to admin page 
      header("Location: admin_area.php");exit(); 
     } 

} 

//second part: this works 
$username = $_POST ['username']; 
$password = md5($_POST ['password']); 

if($username&&$password) 
{ 
include 'connect.php'; 

$query = "SELECT * FROM users WHERE username='$username' AND password='$password' "; 

$numrows = mysqli_query($link, $query) or die(mysqli_error()); 

if ($numrows != 0) 
{ 
    /
    while ($row = mysqli_fetch_assoc ($numrows)) 
    { 
     $dbusername = $row['username']; 
     $dbpassword = $row['password']; 
    } 

     if ($username==$dbusername&&$password==$dbpassword) 
     { 
      echo "you are log in <a href='user.php'>click here for contine</a>, after 4 seconds"; header('Refresh: 4;url=user.php'); 
      $_SESSION ['username'] = $username; 
     } 
     else 
     echo "<h3>incorrect password, <a href='index.php'>click here</a></h3>"; 

} 
else 
    die ("text"); 



} 

else 
    die ("text"); 
//} 
?> 
+1

不要使用MD5密碼散列。 [這是不安全的](http://security.stackexchange.com/questions/19906/is-md5-considered-insecure)。考慮'password_hash'而不是 – Machavity

+0

[您的腳本存在SQL注入攻擊風險。](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) –

+0

請使用PHP的[內置函數](http://jayblanchard.net/proper_password_hashing_with_PHP.html)來處理密碼安全性。如果您使用的PHP版本低於5.5,則可以使用'password_hash()'[兼容包](https://github.com/ircmaxell/password_compat)。 –

回答

1
$a_password = md5($_POST ['password']); 

if($a_username == "admin" && $a_password=="intel") 

這個條件是無效的,因爲

$a_password = md5($_POST ['password']) 

首先被轉換爲MD5格式,然後檢查$a_password=="intel" $a_password現在處於MD5格式和intel是正常的字符串。對於這第一個嘗試匹配正常$a_password

$a_password = $_POST ['password'] 

和你的變量寫入你的病情像

$a_password = md5($_POST ['password']) 
相關問題