2015-11-18 86 views
-1

我發現這個forum thread做一個登錄和註冊系統,但它不檢查密碼是否正確,只有用戶名。PHP登錄不檢查密碼

這是我的登錄頁面代碼:

<?php 
include('config.php'); 
session_start(); 

if($_SERVER["REQUEST_METHOD"] == "POST") 
{ 
    // username and password sent from Form 
    $emailusername = mysqli_real_escape_string($obj->conn,$_POST['emailusername']); 
    $password = mysqli_real_escape_string($obj->conn,$_POST['password']); 
    $password = md5($password); 

    $sql="SELECT uid FROM users WHERE username='$emailusername' or email = '$emailusername' and password='$password'"; 
    $result=mysqli_query($obj->conn,$sql); 
    $row=mysqli_fetch_array($result,MYSQLI_ASSOC); 
    $active=$row['active']; 
    $count=mysqli_num_rows($result); 


    // If result matched $username and $username, table row must be 1 row 
    if($count==1) 
    { 
    $_SESSION['login_user'] = $emailusername; 
    header("location: index.php"); 
    } 
    else 
    { 
    $error="<div style ='color:#c53131'>Your Login Name or Password is invalid</div>"; 
    } 
} 
?> 
</div> 

<form class="fl" action="login.php" method="post"> 
    <label>Username:</label><br/> 
    <input type="text" name="emailusername"/><br /> 
    <br/> 
    <label>Password:</label><br/> 
    <input type="password" name="password"/> 
    <input type="submit" value=" Submit "/><br /> 
</form> 

這是我使用的表格:

"uid INT(11) PRIMARY KEY AUTO_INCREMENT,". 
    "username VARCHAR(30) UNIQUE,". 
    "password VARCHAR(50),". 
    "name VARCHAR(100),". 
    "email VARCHAR(70) UNIQUE); "; 

我新的PHP和不知道如何使它檢查,如果密碼是正確還是不正確。有什麼建議麼?

+0

http://php.net/manual/en/function.password-verify.php – Trilarion

+1

停止。即使你得到這個工作:這是原始代碼,所以你應該投資於這個問題是值得懷疑的。這裏有一些問題,但有一點真的會突然出現:「密碼永遠不應該存儲在數據庫中」。這是沒有理由的,你只是通過這個創造了一個巨大的安全問題。 – arkascha

+0

您是否聽說過運營商優先級? – Neil

回答

3

嘗試查詢如下:

SELECT uid FROM users 
WHERE (username='$emailusername' or email = '$emailusername') 
and password='$password'"; 
0

請嘗試波紋管查詢:

SELECT uid 
FROM users 
WHERE (username='$emailusername' OR email = '$emailusername') 
AND password='$password' 

希望這會幫助你。

1

檢查查詢

$sql="SELECT uid FROM users WHERE (username='$emailusername' OR email = '$emailusername') AND(password='$password')"; 
0

查詢應該是這樣的。

$sql="SELECT uid FROM users WHERE (username='".$emailusername."' or email = '".$emailusername."') and password='".$password."'"; 

如果你必須使用不同的邏輯運算符,你應該加上括號個人評價。此外,您必須將usernamepassword作爲字符串傳遞。