簡體   English   中英

在提交之前填充PHP`POST`

[英]PHP `POST` Populated Before Submit

抱歉,如果這是重復的,我找不到上一個問題。

我有一個接受某些用戶輸入的表單,然后在提交輸入后,應該發生mailto函數。

我的問題是,即使刷新瀏覽器的緩存時,我的$_POST值也已經從先前的提交中設置了。 理想情況下,我希望該帖子每次重設。

的PHP

if(isset($_POST)){sendIt();}



        function sendIt(){
            global $disabled,$b;            
            if (!empty($_POST)){
                $name = $_POST['name'];$name = filter_var($name, FILTER_SANITIZE_SPECIAL_CHARS);
                $branch = $_POST['branch'];
                $numb = $_POST['numb'];
                $subject = $_POST['subject'];
                if (isset($_POST['email'])){
                    $email = $_POST['email'];$email = filter_var($email, FILTER_SANITIZE_EMAIL);
                }else{
                    $email = '';
                }
                if ($disabled!=='disabled'){
                    $b = $_POST['b'];
                }
                echo ('<script>window.location.href = "mailto:bobby@bboi.com?subject=Support Requested!&body=Contact: "+"'.$name.'"+"Bank: "+"'.$b.'"+" - "+"'.$branch.'"+"Contact Number: "+"'.$numb.'"+"Email: "+"'.$email.'"+"Summary: "+"'.$subject.'"</script>');
            }
        }

的HTML

      <form method="post" action="#">
        <center><div class="user-form">
        Name :<br>
        <input type="text" id="name" name="name" style="width: 300px" required>
        <br>
        Main Location :<br>
        <input <?php echo $disabled?> value='<?php echo $b?>' type="text" id="bank" name="bank" style="width: 300px" required>
        <br>
        Branch Needing Support :<br>
        <input type="text" id="branch" name="branch" style="width: 300px" required>
        <br>
        Contact Number :<br>
        <input type="text" id="numb" name="numb" style="width: 300px" required>
        <br>
        Email (optional) :<br>
        <input type="email" id="email" name="email" style="width: 300px">
        <br>
        Subject :<br>
        <textarea id="subject" name="subject" style="height:200px; width: 300px;" required></textarea>
        <br><br>
        </div></center>
        <center><input name="submit" type="submit" value="Submit"></center>
      </form>

編輯我已經玩了很多。 我意識到isset($_POST)將返回true。 我想我真的只需要一種方法就可以在提交值后運行我的函數。 這樣,我可以將當​​前POST值用於我的mailto

if(isset($_POST))

$_POST將始終被設置,如果不是POST請求,則為空。 因此,此if語句將始終返回true。

一個簡單的解決方法是將其更改為:

if(!empty($_POST))

但是更好的解決方案是檢查是否實際發布了任何特定的東西:

if(isset($_POST['name']))

當表格發布時,您可以從根本上處理

if(count($_POST)>0)
{
    echo "form posted with fill inputs";

}

您需要使用發布/重定向/獲取模式

每次收到帖子數據時,您都需要先完成提交的數據,然后再重定向到另一個(或相同)頁面。 由於瀏覽器歷史記錄有效地跳過了提交,因此可以防止意外的重新提交。

另外,您應該檢查期望的特定值,即,

<?php
if(isset($_POST[‘submit’]) { ... 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM