发生PHP和MySql登录错误

时间:2014-03-05 09:56:23

标签: php mysql

当我运行代码时,没有语法或任何错误,但问题是sql查询似乎没有读取用户名和密码:

这是我运行代码并尝试登录时得到的结果:

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>

3 个答案:

答案 0 :(得分:0)

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

在您的代码示例中,您永远不会将这些帖子值分配给这些会话值。

答案 1 :(得分: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"]);

..

答案 2 :(得分: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());