[英]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.