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,用户名,密码,名字和姓氏列。
由于某些未知原因,当我点击提交按钮时,它会显示一个空白页面,虽然网址会更改为页面,当我添加某种类型的文本(如html段落)时会显示它。
所以它进入页面,如果需要也有一个css文件,它在几天前工作,现在它不是。我不明白它有什么问题。
就像PHP甚至无法运行,它只是被忽略了
答案 0 :(得分:3)
我想澄清几点:
不推荐使用Mysql,因此现在使用mysqli和PDO是一种很好的做法。
根据您的代码,您似乎没有在DB中存储加密密码。出于安全目的,您必须加密密码。
您正在查询自己的用户名和密码,然后为什么要在PHP代码中再次比较它。
请尝试使用以下代码:
<?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"; }
?>
答案 1 :(得分:2)
$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());
culrpit是password = '$password'"); or die
答案 2 :(得分:2)
几个问题/不良做法......
1:不要在数据库中以明文形式保存密码。使用一些加密,如hash + md5。
2:不要使用mysql。请改用mysqli或PDO。 - &GT; http://php.net/manual/de/book.mysqli.php - &GT; http://php.net/manual/de/book.pdo.php
3:一些逻辑:看看你的SQL查询。您是从用户名和用户名中选择的。 password对应于用户输入的值。那么,这意味着什么?如果查询将找到一个条目,数据将自动更正,因为如果您输入了错误的密码,该语句将不会返回任何数据,因此您的if语句是不必要的。 通过这样做:
$dbusername = $row['username']
$dbpassword = $row['password']
(顺便说一句,在这两行末尾没有丢失)你只是将数据库中返回的数据分配给变量。但它的正确逻辑是$ dbusername将始终对应于$ username,因为正如我所说,你只是以这种方式处理SQL语句。
我认为你对编程很新,或者至少是PHP的新手。我真的建议你看看mysqli和谷歌的一些登录系统,看看这些例子并重写你的代码。
顺便说一下,我不知道你对会话的了解,但我确定你在登录时会开始一个会话,所以这可能是你的另一个关键词可以google。