我正在使用PHP脚本从MySQL数据库中获取数据,并检查输入的密码是否与数据库中的密码匹配。如果是,则应将用户重定向到站点。但是,当我运行它时,它将显示定义为$ errorMessage的消息。
我做错了什么?该脚本用于使用bootstrap的登录表单。
提前致谢!
<?php
$link = mysqli_connect("localhost","root","password") or die("Verbindung zum Server nicht möglich. Bitte kontaktiere uns.");
mysqli_select_db($link,"berufs_schule");
if(isset($_REQUEST['submit'])){
$errorMessage = "Ein Fehler ist aufgetreten.";
$email=$_POST['email'];
$password=$_POST['password'];
if ($errorMessage != "" ) {
echo "<p class='message'>" .$errorMessage. "</p>";
}
else{
$query = "SELECT email, password FROM members WHERE email='$email'";
while ($rows = mysqli_fetch_array($query)):
$name_db = $rows['name'];
$password_db = $rows['password'];
if(md5($password) == $password_db){
echo "<meta http-equiv='refresh' content=\"0; url=success.html\">";
} else {
echo "<p class='message'>Passwort falsch, bitte versuche es erneut!</p>";
}
endwhile;
}
}
?>
编辑:
我现在删除了对errorMessage的检查,现在它只显示一个空白屏幕并且不输出密码不正确(“Passwort falsch,bitte versuche es erneut!”)或将我重定向到success.html。错误是什么?
答案 0 :(得分:1)
你的代码中有多个错误(errorMessage声明,语法错误,对SQL注入开放),所以看看这个,你可能会发现它有用。
<?php
$errorMessage = "Ein Fehler ist aufgetreten.";
$link = mysqli_connect("localhost","root","") or die("Verbindung zum Server nicht möglich. Bitte kontaktiere uns.");
mysqli_select_db($link,"trainingcentre");
if (isset($_REQUEST['submit'])) {
// If either email or password is missing, show error emssage
if (empty($_POST['email']) || empty($_POST['password'])) {
echo $errorMessage;
} else {
// Lets escape user input
$email = mysqli_real_escape_string($_POST['email']);
$sql = "SELECT email, password FROM members WHERE email='$email'";
$query = mysqli_query($link, $sql);
// If query was successfull
if ($query) {
while ($rows = mysqli_fetch_array($query)) {
$password_db = $rows['password'];
if (md5($password) == $password_db) {
echo "<meta http-equiv='refresh' content=\"0; url=success.html\">";
} else {
echo "<p class='message'>Passwort falsch, bitte versuche es erneut!</p>";
}
}
} else { // If query failed, show error message
echo $errorMessage;
}
}
不要复制粘贴(我没有测试它),只需查看。