2014-03-14 69 views
1

我需要獲取管理員名稱和密碼。然後需要使用php比較用戶輸入和MySQL。如果數據庫通過驗證,我應該登錄到下一頁。如果驗證正確,如何編寫php函數來訪問MySQL。我應該登錄他。需要檢查MySQL數據庫並在驗證登錄後

設計我的HTML代碼:

<?php 

    ?> 
    <!DOCTYPE HTML> 

    <head> 
     <title>Login Page</title> 
     <link rel="stylesheet" type="text/css" href="css/home.css"> 
     <script src="js/home.js"> </script> 
    </head> 
    <body> 
     <form action="validate_login.php" method="post"> 
     <div> 
      <div class="layout"> 
       <div class="heading"></div> 
       <div class="img1"></div> 
       <div class="login"> 
        <div class="logo"></div> 
        <div > <label class="AdminName">Admin Name</label> <input type="text" name="AdminName" value="AdminName" id="AdminName"/></div> 
        <div > <label class="Password">Password</label> <input type="password" name="Password" value="Password" id="Password" /></div> 
        <input type="button" button onclick='window.location="menu.php"' name="Login" id="login" value="LOGIN"/> 
        <input type="button" name="Login" id="cancel" value="cancel"/></form> 
       </div> 
       <div class="img2"></div> 
      </div> 

     </div> 
    </body> 

我的PHP代碼來訪問數據庫:

<?php 

    // Grab User submitted information 
    $AdminName = $_POST["AdminName"]; 
    $Password = $_POST["Password"]; 

    // Connect to the database 
    $con = mysql_connect("localhost","admin","[email protected]"); 
    // Make sure we connected succesfully 
    if(! $con) 
    { 
     die('Connection Failed'.mysql_error()); 
    } 

    // Select the database to use 
    mysql_select_db("admin_data",$con); 

    $result = mysql_query("SELECT AdminName, Password FROM admin_info WHERE AdminName = $AdminName"); 

    $row = mysql_fetch_array($result); 

    if($row["AdminName"]==$AdminName && $row["Password"]==$Password) 
     echo"You are a validated user."; 
    else 
     echo"Sorry, your credentials are not valid, Please try again."; 
    ?> 
+2

如果您使用該代碼,那麼任何人都一定能夠登錄。或者,如果他們喜歡,可以刪除您的數據庫。 'mysql_ *'函數被棄用,因爲它們不安全。你應該閱讀關於SQL注入 - (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)。除此之外,我無法分辨你在問什麼。這段代碼不能按預期工作嗎? – Cfreak

+1

@ user3317807,看看你有很多錯誤,你必須糾正。簡單的一個是添加引號爲'$ AdminName'等選擇查詢。爲了使它更簡單,將結果(在while後面)設置在另一個變量中,然後進行比較。檢查GOOGLE.YOU有很多腳本爲此 – codelover

+1

旁註:此行WHERE AdminName = $ AdminName'需要WHERE AdminName =' $ AdminName'' ---'$ AdminName'需要用引號括起來,否則將被視爲一個整數;這很可能是它不工作的原因。 –

回答

3

嘗試

$result = mysql_query("SELECT AdminName, Password FROM admin_info WHERE AdminName = '".mysql_real_escape_string($AdminName)."' AND Password = '".mysql_real_escape_string($Password)."'"); 
-1

使用此查詢,而不是你的,

$result = mysql_query("SELECT AdminName, Password FROM admin_info WHERE AdminName = '".mysql_real_escape_string($AdminName)."' and Password = '".mysql_real_escape_string($Password)."'"); 

這裏授權

if(mysql_num_rows($result) > 0){ 
    //your redirection to inner page 
}else{ 
    // invalid loggin 
} 
+0

對不起,雖然你的建議可能有效,但你的查詢很容易受到SQL注入的影響。 @Laukik使用的是更安全的mysql_real_escape_string。但最好你應該使用PDO來執行PHP查詢。 – Ruben

+0

@Ruben,謝謝 – SagarPPanchal

0

只使用

$result = mysql_query("SELECT AdminName, Password FROM admin_info WHERE AdminName = '".mysql_real_escape_string($AdminName)."' AND Password = '".mysql_real_escape_string($Password)."'"); 
if(mysql_num_rows($result) > 0) 
    echo"You are a validated user."; 
else 
    echo"Sorry, your credentials are not valid, Please try again."; 

,因爲你已經開始進行驗證:

$result = mysql_query("SELECT AdminName, Password FROM admin_info WHERE AdminName = '".mysql_real_escape_string($AdminName)."' AND Password = '".mysql_real_escape_string($Password)."'"); 

所以如果mysql_num_rows($result)不爲空或不假,只是登陸用戶英寸

notemysql_*功能已棄用,因爲它們不安全。

+0

旁註:這會失敗。如果你得到一個downvote,它不會**從我這裏來。仔細檢查你的代碼。你也應該使用'mysql_num_rows()'不只是'if($ row)' –

+0

感謝您的建議Fred – dhidy

+0

不客氣。 –