我想从我的页面发送一个名为index.php的数据,该操作与同一页面有关,所以我可以在index.php中获取$_POST['submitted']
,当我提交数据时成功保存到我的数据库,但当我重新加载页面数据仍然保存到我的数据库。我的问题是,当我重新加载数据时,如何避免发送数据,但操作是使用相同的页面(<?php echo $_SERVER['PHP_SELF'];?>
)..?
谢谢..
//page index.php
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<input type="hidden" name="submitted" value="1" />
<input type="text" name="email_address"/>
<input type="submit" value="submit"/>
</form>
//still in index.php
if(isset($_POST['submitted']) && $_POST['submitted']==1)
{
//send data
}
答案 0 :(得分:0)
使用
if(isset($_POST['submit'])){ //send data}
因为你给了隐藏字段值= 1,而且条件总是变为真。
答案 1 :(得分:0)
最可靠的做法是使用两个略微不同的网址。重新加载页面时出现问题的原因是浏览器识别出它与调用的url完全相同,因此执行完全相同的请求(包括post变量)。不同的网址不会发生这种情况。
将查询参数添加到表单目标网址就足够了,这样网址会有所不同,但您仍然可以调用相同的脚本。您可以简单地忽略该伪参数。在处理了post变量(将它们存储在数据库中)之后,您向浏览器发送一个重定向标头,指向没有query参数的普通url。这样浏览器重新加载页面而不发送post变量。您可以使用phps header()
函数进行重定向。
答案 2 :(得分:0)
为提交输入添加名称应解决问题,如下所示:
...
<input type="submit" name="submit" value="submit"/>
if(isset($_POST['submit']) {
...
另一方面,我认为应该是:
action="<?php $_SERVER[ 'PHP_SELF' ]; ?>"
没有“回声”。
希望这有帮助。