POST表单不与PHP一起使用,与Postman合作

时间:2017-07-08 12:58:13

标签: php css twitter-bootstrap mysqli

这是带会话的登录代码。我使用bootstrap。代码没有重定向到index.html,当我在Postman中测试它工作但它不能在这个bootstrap模板中工作。我没理由?请帮忙

<?php

if($_SERVER["REQUEST_METHOD"]=="POST") {
    $email=$_POST["email"];
    $password=$_POST["password"];

    $sql = "SELECT * FROM login where email='$email' and password='$password'";

    $result = mysqli_query($conn,$sql);
    $row=mysqli_fetch_array($result,MYSQLI_ASSOC);
    $count = mysqli_num_rows($result);

    if ($count>0) {

        // output data of each row
        if($row['admin_role']==1) {
            //$_SESSION["email"]=$email;
            //$_SESSION["id"]=$row['user_id'];

            //echo "Login successfull";

            header('Location: index.html');
            exit; 
        }
    } else {
        echo "0 results";
    }
}

?>


<div class="row">
    <div class="col-xs-10 col-xs-offset-1 col-sm-8 col-sm-offset-2 col-md-4 col-md-offset-4">
        <div class="login-panel panel panel-default">
            <div class="panel-heading"> Admin Log in</div>
            <div class="panel-body">
                <form role="form">
                    <fieldset>
                        <div class="form-group">
                            <input class="form-control" placeholder="E-mail" name="email" type="email" autofocus="">
                        </div>
                        <div class="form-group">
                            <input class="form-control" placeholder="Password" name="password" type="password" value="">
                        </div>
                        <div class="checkbox">
                            <label>
                                <input name="remember" type="checkbox" value="Remember Me">Remember Me
                            </label>
                        </div>
                        <a href="" class="btn btn-primary">Login</a>
                    </fieldset>
                </form>
            </div>
        </div>
    </div><!-- /.col-->
</div><!-- /.row --> 

4 个答案:

答案 0 :(得分:6)

您的表单是GET表单,您需要在method="POST"标记上设置<form>

除此之外,您的代码非常容易受到攻击,您应该在数据库中对密码进行哈希处理,并且应该使用PDO,因为它更安全,您还应该使用预准备语句并关闭模拟语句。

目前,您的代码容易受到SQL注入攻击,这是Web应用程序最基本但最危险的安全威胁之一。

答案 1 :(得分:2)

OverCoder是对的,顺便说一句,你应该在分配值之前检查两个POST变量的isset: if (isset($_POST["email"]) && isset($_POST["password"])) { //bla bla }

答案 2 :(得分:2)

您忘记了提交按钮,您忘记了表单方法和类型,所以: action =“#”告诉你,来自同一个php文件。 非常重要的是改变这个: $电子邮件= $ _ POST [ “电子邮件”]; 上 $电子邮件=用strip_tags($ _ POST [ “电子邮件”]);

了解strip_tags()函数:)

<div class="row">
<div class="col-xs-10 col-xs-offset-1 col-sm-8 col-sm-offset-2 col-md-4 col-md-offset-4">
    <div class="login-panel panel panel-default">
        <div class="panel-heading"> Admin Log in</div>
        <div class="panel-body">
            <form role="form" action="#" method="post">
                <fieldset>
                    <div class="form-group">
                        <input class="form-control" placeholder="E-mail" name="email" type="email" autofocus="">
                    </div>
                    <div class="form-group">
                        <input class="form-control" placeholder="Password" name="password" type="password" value="">
                    </div>
                    <div class="checkbox">
                        <label>
                            <input name="remember" type="checkbox" value="Remember Me">Remember Me
                        </label>
                    </div>
                    <button type="submit" class="btn btn-primary">Login</button>
                </fieldset>
            </form>
        </div>
    </div>
</div><!-- /.col-->

答案 3 :(得分:0)

我认为

步骤1:您可以使用POST设置表单方法,如method="post"并使用按钮类型提交(不使用锚点和类型=&#34;按钮&#34;对于从表单发送的数据不起作用)。仅使用了提交按钮。

Step2:您可以使用条件输入字段来登录。 isset()表示字段不是空数据(PHP函数),而&&表示这两种情况。

步骤3:如果可以在会话中存储数据,则需要启动会话(session_start())。如果您无法开始会话,则无法存储数据。

if(isset($_POST["email"]) && isset($_POST["password"])) {
    $email    = trim($_POST["email"]);
    $password = trim($_POST["password"]);


    $sql = "SELECT * FROM login where email='$email' and password='$password'";

    $result = mysqli_query($conn,$sql);
    $row=mysqli_fetch_array($result,MYSQLI_ASSOC);
    $count = mysqli_num_rows($result);

    if ($count>0) {

        // output data of each row
        if($row['admin_role']==1) {

            //session_start();
            //$_SESSION["email"] = $email;
            //$_SESSION["id"]    = $row['user_id'];

            //echo "Login successfull";

            header('Location: index.html');
        }
    } else {
        echo "0 results";
    }
}



<div class="row">
    <div class="col-xs-10 col-xs-offset-1 col-sm-8 col-sm-offset-2 col-md-4 col-md-offset-4">
        <div class="login-panel panel panel-default">
            <div class="panel-heading"> Admin Log in</div>
            <div class="panel-body">
                <form role="form" action="" method="POST">
                    <fieldset>
                        <div class="form-group">
                            <input class="form-control" placeholder="E-mail" name="email" type="email" autofocus="">
                        </div>
                        <div class="form-group">
                            <input class="form-control" placeholder="Password" name="password" type="password" value="">
                        </div>
                        <div class="checkbox">
                            <label>
                                <input name="remember" type="checkbox" value="Remember Me">Remember Me
                            </label>
                        </div>
                        <button type="submit" class="btn btn-primary">Login</button>
                    </fieldset>
                </form>
            </div>
        </div>
    </div><!-- /.col-->
</div><!-- /.row -->