用于获取MySQL数据的PHP脚本不起作用

时间:2016-11-04 15:44:18

标签: php mysql twitter-bootstrap

我正在使用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。错误是什么?

编辑2:在http://test.enderpixel.net/berufs.schule/login.html

测试脚本

1 个答案:

答案 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;

        }

}

不要复制粘贴(我没有测试它),只需查看。