2014-03-05 78 views
0

當我運行的代碼沒有語法或任何錯誤實際上OCUR但問題是,SQL查詢似乎沒有被閱讀的用戶名和密碼:PHP和MySQL登錄錯誤存在的

這裏是我所得到的當我運行的代碼,並嘗試登錄:

That information is incorrect, try again Click Here 

這裏是PHP

<?php 



if(isset($_POST["username"]) && isset($_POST["password"])){ 

$manager = preg_replace('#[^A-Za-z0-9]#i','',$_SESSION["username"]); 
$password = preg_replace('#[^A-Za-z0-9]#i','',$_SESSION["password"]); 

include"db_connection.php"; 
$sql = mysql_query("SELECT id FROM admin WHERE username='$manager' AND password='$password'"); 



$existCount = mysql_num_rows($sql); 
if ($existCount ==1){ 
    while($row = mysql_fetch_array($sql)){ 
     $id=$row["id"]; 
    } 


    $_SESSION["id"]=$id; 
    $_SESSION["manager"]=$manager; 
    $_SESSION["password"]=$password; 
    header("location:index.php"); 
    exit(); 
    }else{ 
     echo'That information is incorrect, try again<a href="index.php"> Click Here</a>'; 
     exit(); 
    } 
} 

?> 

下面是HTML:

<html> 
<head> 
<title> Admin Login Page</title> 

<head> 
<body> 
<div align="center" id="mainWrapper"> 

<div id="pageContent"><br/> 
    <div align="left" style="margin-left:24px;"> 
     <h2> Please log in To manage the store</h2> 
     <form id="form1" name="form1" method="post" action="admin_login.php"> 
     User Name: <br/> 
      <input name="username" type="text" id="username" size="40"/> 
      <br/></br> 
      Password: <br/> 
      <input name="password" type="password" id="password" size="40"> 
       <br/> 
       <br/> 
       <br/> 
       <br/> 
       <br/> 
      <label> 
       <input type="submit" name="button" id="button" value="LogIn"> 
      </label> 
     </form> 
</body> 
</html> 

回答

0

您檢查$_POST['username']$_POST['password'],但在查詢中使用$_SESSION["manager"]$_SESSION["password"]。你不需要你的$ _POST值嗎?

在您的代碼示例中,您從不將這些帖子值分配給這些會話值。

+0

感謝我固定的@jan的方式,但我仍然得到同樣的錯誤 – user3311898

+0

我們對我們的方式:-)。你得到的錯誤究竟是什麼? – jan

+0

:)呃,錯誤是當我嘗試登錄它給了我'這個信息是不正確的,當再次輸入用戶名和密碼時,請再次點擊這裏'@jan – user3311898

0

您正在檢查用戶名和密碼是否在POST請求中,但是您在會話請求上執行了preg_replace。我不認爲這是正確的。

if(isset($_POST["username"]) && isset($_POST["password"])){ 

$manager = preg_replace('#[^A-Za-z0-9]#i','',$_POST["manager"]); 
$password = preg_replace('#[^A-Za-z0-9]#i','',$_POST["password"]); 

.. 
0

這可能是你的mysql_query沒有得到正確執行。你可以在屏幕上打印你的$ sql變量,看看你的$ manager和$ password變量是否正確輸出?如果是這樣,你可以複製該SQL查詢並手動運行在phpmyadmin /你的數據庫客戶端,看看你是否得到所需的輸出?

另一種可能性是,你可以改變你寫你的mysql_query

mysql_query('SELECT id FROM admin WHERE username="' .$manager. '" and password= "' .$password. '";') or die(mysql_error()); 
+0

什麼是打印語法,我在哪裏放置它。我試過雙引號,但它仍然給我同樣的問題 – user3311898

+0

只是做echo $ sql;死();在你的$ sql語句之後,讓我們知道你得到了什麼輸出。 – noobcode

+0

我得到'Resource id#4'打印出來 – user3311898