PHP/HTML-Web-调用要显示的内容

PHP/HTML-Web-调用要显示的内容,php,html,mysql,web,Php,Html,Mysql,Web,我想做的是让事情出现 我已经创建了一个登录系统。我想做的是,当他们错误地回答用户名和密码时,制作一个框,上面写着“不正确的密码”或类似的内容 后端相当简单。我计划在得到答案后把它弄得更复杂。另外,一些前端是在引导中编写的。我使用MySQL来包含用户名和密码信息 我需要的是一个简单的PHP变量,稍后在HTML中调用。我不会将后端和前端结合在一起 我的代码: 前端: <html> <head> <link rel="stylesheet" hre

我想做的是让事情出现

我已经创建了一个登录系统。我想做的是,当他们错误地回答用户名和密码时,制作一个框,上面写着“不正确的密码”或类似的内容

后端相当简单。我计划在得到答案后把它弄得更复杂。另外,一些前端是在引导中编写的。我使用MySQL来包含用户名和密码信息

我需要的是一个简单的PHP变量,稍后在HTML中调用。我不会将后端和前端结合在一起

我的代码:

前端:

<html>
    <head>
        <link rel="stylesheet" href="../../css/bootstrap.min.css"/>

        <title>User Login</title>
    </head>

    <body>
        <div class="container">
            <div align="center" class="jumbotron">
                <div class="container">
                    <h1>User Login</h1>
                </div>
            </div>

            <div align="center" class="container">
                <form action="login.php" method="post">
                    <div class="form-group">
                        <input type="text" name="username" id="username" placeholder="Username"/>
                    </div>

                    <div class="form-group">
                        <input type="password" name="password" id="password" placeholder="Password"/>
                    </div>

                    <input value="Submit" type="submit" class="btn btn-primary"/>
                </form>
            </div>
        </div>
    </body>
</html>

用户登录
用户登录
后端:

<?php

    session_start();

    $servername = "**BLOCKED**";
    $username = "**BLOCKED**";
    $password = "**BLOCKED**";
    $dbname = "**BLOCKED**";

    $conn = new mysqli($servername, $username, $password, $dbname);

    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }

    $sql = "SELECT password FROM user WHERE username = '" . $_POST["username"] . "'";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
        while($row = $result->fetch_assoc())
        {
            if ($row["password"] == $_POST["password"])
            {
                $_SESSION["Authenticated"] = true;

                header("Location: ../");
            }else
            {
                echo "Login failed";
            }

            //Debug

            //echo " password DB: " . $row["password"];
            //echo " password IN: " . $_POST["password"];
        }
    } else {
        echo "User not found!";
    }

    $conn->close();

好的,您需要做的是将用户的消息放入变量中,而不是在后端脚本中使用echo。例如:

//login failed
$message = 'Login Failed';
然后,前端脚本需要一种向用户显示此信息的方式。可能在表单标记上方添加:

<div style="colour: red"><?php echo $message; ?></div>


这将为您提供反馈给用户的基本机制。查看您的代码,我还强烈建议您阅读SQL注入漏洞,以及如何使用这些漏洞来抵御用户可能对您的系统发起的更明显的攻击。

请更新您的代码

    <?php

    session_start();
    $servername = "**BLOCKED**";
    $username = "**BLOCKED**";
    $password = "**BLOCKED**";
    $dbname = "**BLOCKED**";


    $conn = new mysqli($servername, $username, $password, $dbname);

    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }

    $message ='';
    if(!empty($_POST["username"])  && !empty($_POST["password"])) {


    $sql = "SELECT password FROM user WHERE username = '" . $_POST["username"] . "'";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
        while($row = $result->fetch_assoc())
        {
            if ($row["password"] == $_POST["password"])
            {
                $_SESSION["Authenticated"] = true;

                header("Location: ../");
            }else
            {
                $message = "Login failed.please enter correct password";
            }

            //Debug

            //echo " password DB: " . $row["password"];
            //echo " password IN: " . $_POST["password"];
        }
        } else {
            $message= "User not found!";
        }
    }else
    {
        $message ="Please enter username/password";
    }

    $conn->close();

?>
<html>
    <head>
        <link rel="stylesheet" href="../../css/bootstrap.min.css"/>

        <title>User Login</title>
    </head>

    <body>
        <div class="container">
            <div align="center" class="jumbotron">
                <div class="container">
                    <h1>User Login</h1>
                </div>
            </div>

            <div align="center" class="container">
            <div style="color: red"><?php echo  $message; ?></div>
                <form action="" method="post">
                    <div class="form-group">
                        <input type="text" name="username" id="username" placeholder="Username"/>
                    </div>

                    <div class="form-group">
                        <input type="password" name="password" id="password" placeholder="Password"/>
                    </div>

                    <input value="Submit" type="submit" class="btn btn-primary"/>
                </form>
            </div>
        </div>
    </body>
</html>
添加/替换:

$result = $conn->query($sql);
$FORM_DATA = ''; // variable with will go to the view (html)
&

&

&视图(html) 之后:


用户登录
添加带有变量的html

<?php if($FORM_DATA): ?>

<div align="center" class="jumbotron">
<div class="container">
<p style="color: red"><?php echo $FORM_DATA ?></p>
</div>
</div>

<?php endif; ?>


将后端代码放在前端代码的顶部(可能使用
包含
或类似内容),将其包装在检查有效
$\u POST
的内容中,将
退出在任何重定向
header()
之后,然后代替
回显“未找到用户”将其分配给一个变量,并在html页面中您想要的地方回显它。您尝试过的东西有什么问题?您真的应该使用PHP来处理密码安全性。如果您使用的是低于5.5的PHP版本,那么您可以使用
密码\u hash()
。还有…他们说的话!非常感谢你。这肯定会有帮助,也谢谢你的注射帮助。我不知道那件事。你救了我很多麻烦!这很好,但与我在这里试图实现的目标相比有点太多了。对不起。哈哈……原来,这就是我需要的。1。我喜欢把我的文件分开,所以把PHP和HTML放在一起是不合逻辑的。2.这离我需要达到的目标太远了。抱歉。好的,然后您可以将php代码放在其他文件中,并使用会话显示错误
//echo "User not found!";
$FORM_DATA = 'Wrong login or password';
<div align="center" class="jumbotron">
<div class="container">
<h1>User Login</h1>
</div>
</div>
<?php if($FORM_DATA): ?>

<div align="center" class="jumbotron">
<div class="container">
<p style="color: red"><?php echo $FORM_DATA ?></p>
</div>
</div>

<?php endif; ?>