2014-03-05 59 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