PHP POST表单删除URL中的参数

时间:2016-09-26 01:42:25

标签: php forms post

好的,所以我的网站设置为/index.php?page=PAGE

我的联系页面上有一个表单,但是当我提交POST表单时,它会将URL删除到/index.php

为什么?几个月来我还没有触及PHP,但我不记得这是一个问题。

这是我的代码:

                                    <form action="" method="POST">
    <?php
        if (isset($_POST['contactBtn'])) {
            $errors = array();
            $name = $_POST['ContactInputName'];
            $email = $_POST['ContactInputEmail'];
            $message = $_POST['ContactInputMessage'];

            if(empty($name)) {
                $errors[] = 'You did not enter a name.';
            }
            if(empty($email)) {
                $errors[] = 'You did not enter an email.';
            }
            if(empty($message)) {
                $errors[] = 'You did not enter a message.';
            } 
            if(strlen($message) < 4 || strlen($message) > 4096) {
                $errors[] = 'Message length must be between 4 and 4096 characters long.';
            }

            if(empty($errors)) {


                $Database->selectPrepare("INSERT INTO  `contact` (`ID` ,`name` ,`email` ,`message` ,`time`, `IP`) VALUES (NULL ,  :name,  :email,  :message,  :time, :IP);",
                    array(':name' => $name, ':email' => $email, ':message' => $message, ':time' => time(), ':IP' => $_SERVER["HTTP_CF_CONNECTING_IP"]));
                echo '  <div class="alert alert-success">
                            <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
                            <h4>Success!</h4>
                            Your message has been recieved and we will get back to you as soon as possible!
                        </div>';

            } else {
                echo '
                <div class="alert alert-danger">
                    <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
                    <h4>ERROR!</h4>';
                    foreach($errors as $error) {
                        echo ' <p>'.$error.'</p>';
                    }
                    echo '</div>';
            }

        }
    ?>
    <div class="form-group">
        <label for="ContactInputName">Name</label>
        <input type="text" class="form-control" id="ContactInputName" placeholder="John Smith">
    </div>
    <div class="form-group">
        <label for="ContactInputEmail">Email address</label>
        <input type="email" class="form-control" id="ContactInputEmail" placeholder="John@smith.com">
    </div>
    <div class="form-group">
        <label for="ContactInputMessage">Message</label>
        <textarea class="form-control" id="ContactInputMessage" rows="4"></textarea>
    </div>

  <button type="submit" id="contactBtn" class="btn btn-ar btn-primary">Submit</button>
</form>

3 个答案:

答案 0 :(得分:1)

不会。如果请求URI为/index.php?page=PAGE,表单上有一个空action属性,浏览器会将POST请求发送到/index.php?page=PAGE,它不会改变它。我怀疑你观察到的行为差异与你的web服务器的重写规则或服务器特定的配置有关。这不是PHP会做的事情。

答案 1 :(得分:0)

这是因为cloudflare。它已经缓存了我以前的表格。我检查了网页来源,发现它有旧代码。

谢谢你们!

答案 2 :(得分:-2)

编辑:我误解了这个问题,这不是OP问题的答案。但是,如果您有兴趣了解更多关于GET,POST和HTTP的信息,请继续阅读。

TL; DR是:

  1. 当您使用GET将数据从客户端发送到服务器时,您可以通过URL发送数据。

  2. 当您使用POST将数据从客户端发送到服务器时,您可以将其发送到HTTP请求本身。

  3. HTTP有不同的方法在客户端(您的浏览器)和运行PHP代码的服务器(包括GETPOST)之间来回传递数据。

    This post is a good explanation of the difference between GET and POST.

    Here's a W3Schools explaination as well.

    And a tutorial on all HTTP methods