2016-01-13 39 views
-1

我有這樣的代碼:登錄的連接任何密碼或用戶名是:

if($submit) 
{ 
    $first=$_POST['first']; 
    $password=$_POST['password']; 
    $db = mysql_connect("localhost", "root",""); 
    mysql_select_db("learndb",$db); 
    $sql = "select * from admin where username = '" . $first . "' and password = '". $password . "'"; 
    $result = mysql_query($sql); 


    if($result>0) 
{ 
    echo "LOGGED IN!!"; 
} 
else 
{ 
    echo "ERROR!!!"; 
} 

和我的HTML表單:

<form method="post" action="input-copy.php"> 
First name:<input type="Text" name="first" placeholder="ENTER YOUR NAME"><br> 
password:<input type="password" name="password" placeholder="ENTER PASSWORD"><br> 
<input type="submit" name="submit" value="Enter information"></form> 

但無論我進入名字和密碼,它會顯示登錄!

+2

使用mysql_num_rows == 1,檢查和使用的mysqli或PDO –

+0

@SugumarVenkatesan由於您的評論可能會解決這個問題,爲什麼不你提交它作爲答案? – Peter

+0

不要使用大於0來檢查它是否返回多於一行而不是安全問題 –

回答

2

防止這裏您$result變量將存儲mysql_query返回值,這將如果你的MySQL查詢正確真實。這也是你的邏輯將登錄的原因,無論密碼或用戶名是

您需要使用mysql_num_rows檢查結果計數。

試試這個:

$result = mysql_query($sql); 
$num_rows = mysql_num_rows($result);//Check database table data exits... 
if($num_rows == 1){ 
//You stuff here 
} 

警告

該擴展是PHP 5.5.0過時,它是在PHP 7.0.0 刪除。相反,應該使用MySQLiPDO_MySQL擴展名。

4

mysql_query

對於SELECT,SHOW,描述,解釋等語句返回的結果集 ,請求mysql_query()成功返回的資源,或 錯誤FALSE。

使用mysql_num_rows()

檢索行從結果集數。

$result = mysql_query($sql); 
$row = mysql_num_rows($result); 
if ($row > 0) { 
    echo "LOGGED IN!!"; 
} else { 
    echo "ERROR!!!"; 
} 

注意

MySQL是depricated而是使用庫MySQLi或PDO

不要存儲明文口令到數據庫使用散列TECHNIC

http://php.net/manual/en/function.password-hash.php

http://php.net/manual/en/faq.passwords.php

從SQL注入檢查How can I prevent SQL injection in PHP?

-1

下面是一個簡單的登錄密碼,你可以嘗試

//login query 
$sql="SELECT password FROM login WHERE user_name='$username'"; 
$result=mysqli_query($conn ,$sql); 

// Mysql_num_row is counting table row 
$count = mysqli_num_rows($result); 

if($count == 1) 
{ 
    // Associative array 
    $row=mysqli_fetch_assoc($result); 

    if ($password == $row["password"]) { 
     $_SESSION['user'] = $username; 
     echo "Loggedin"; 
     mysqli_free_result($result); 
    } 
    else 
    { 
     echo "Not a valid user"; 
    } 
} 
else 
{ 
    $_SESSION["error_log"] = "No such user exist!"; 
    header("location:../index.php"); 
    die($_SESSION["error_log"]); 
} 
相關問題