当我运行代码时,没有语法或任何错误,但问题是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>
答案 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());