PHP代码如下:
<html>
<?php
$username = $_POST['user'];
$password = $_POST['pass'];
$username = stripcslashes($username);
$password = stripcslashes($password);
$username = mysql_real_escape_string($username);
$password = mysql_real_escape_string($password);
mysql_connect("localhost", "root", "");
mysql_select_db("login");
$result = mysql_query("select * from users where username = '$username' and password = '$password'")
or die ("Failed to query database ".mysql_error());
$row = mysql_fetch_array($result);
$dbusername = $row['username'];
$dbpassword = $row['password'];
if ($username == $dbusername); {
echo "login succesfull";
}
else
{
echo "failed to login";
}
?>
</html>登录页面代码为:
<!DOCTYPE html>
<html>
<head>
<title>Login Page</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<img src="WCCS Logo.png" id="schoollogo">
<div id="frm">
<form action="process.php" method="POST">
<p>
<label>Username: </label>
<input type="text" id="user" name="user"/>
</p>
<p>
<label>Password: </label>
<input type="password" id="pass" name="pass" />
</p>
<p>
<input type="submit" id="btn" value="login" />
</p>
</form>
</div>
</body>
数据库名为login,表名为users,其中包含id、用户名、密码、名字和姓氏等列,其中包含输入的信息。
由于某些未知的原因,当我点击提交按钮时,它会弹出一个空白页面,尽管url会更改为页面,并且当我添加某种类型的文本时,比如html段落,它会显示出来。
所以它会转到页面,如果需要的话,还有一个css文件,几天前它还在工作,但现在不工作了。我不明白它有什么问题。
这就像PHP甚至没有运行,它只是被忽略了
发布于 2016-10-07 18:03:57
我想澄清几点:
请尝试以下代码:
<?php
$con=mysqli_connect("localhost","root","","login");
$username = $_POST['user'];
$password = $_POST['pass'];
$username = stripcslashes($username);
$password = stripcslashes($password);
$username = mysqli_real_escape_string($con, $username);
$password = mysqli_real_escape_string($con, $password);
$result = mysqli_query($con, "select * from users where username = '".$username."' and password = '".$password."'") or die ("Failed to query database ".mysqli_error());
$row = mysqli_fetch_array($result);
if (!empty($row)) {
echo "login succesfull";
}
else{ echo "failed to login"; }
?>发布于 2016-10-07 17:58:52
$dbusername = $row['username']
$dbpassword = $row['password']这些也应该改变
$dbusername = $row['username'];
$dbpassword = $row['password']; 白色页面(打开了错误)很好地表明您遗漏了其中之一:()[]{};。
这一行有一个额外的';‘。因此,请更改以下内容:
$result = mysql_query("select * from users where username = '$username' and password = '$password'");
or die ("Failed to query database ".mysql_error()); 要这样做:
$result = mysql_query("select * from users where username = '$username' and password = '$password'")
or die ("Failed to query database ".mysql_error()); 文化坑是password = '$password'"); or die
发布于 2016-10-07 18:11:40
几个问题/糟糕的做法...
1:不要在数据库中以明文形式保存密码。使用像hash+md5这样的加密技术。
2:不要使用mysql。请改用mysqli或PDO。-> http://php.net/manual/de/book.mysqli.php -> http://php.net/manual/de/book.pdo.php
3:一些逻辑:看看您的SQL查询。您正在从用户名和密码与用户输入的值相对应的用户中进行选择。那么,这意味着什么呢?如果查询找到一个条目,数据将自动正确,因为如果输入了错误的密码,语句将不会返回任何数据,因此If语句是不必要的。通过这样做:
$dbusername = $row['username']
$dbpassword = $row['password'](顺便说一句,;在这两行末尾缺少)您只是将从数据库返回的数据赋值给变量。但这只是逻辑,$dbusername将始终对应于$username,因为正如我所说的,您只是以这种方式处理SQL语句。
我认为您是编程新手,或者至少是PHP新手。我真的建议你看看mysqli和谷歌的一些登录系统,看看这些例子,然后重写你的代码。
顺便说一句,我不知道你对会话有什么了解,但我很确定你登录时会启动一个会话,所以这也是你可以谷歌搜索的另一个关键字。
https://stackoverflow.com/questions/39914414
复制相似问题