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