2014-03-14 71 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

不客气。 –