0

我想从我的页面发送一个名为 index.php 的数据,该操作与同一页面相同,所以我可以进入$_POST['submitted']index.php,当我提交数据时成功保存到我的数据库,但是当我重新加载页面数据时仍然保存到我的数据库。我的问题是当我重新加载数据时如何避免发送数据但操作是在同一页面(<?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
}
4

3 回答 3

0

利用

if(isset($_POST['submit'])){ //send data}

因为您将 value=1 赋予隐藏字段,这就是条件始终为真。

于 2012-11-12T06:50:06.877 回答
0

最可靠的做法是使用两个稍微不同的 url。重新加载页面时出现问题的原因是浏览器识别出它是完全相同的 url 调用,因此执行完全相同的请求(包括 post 变量)。不同的网址不会发生这种情况。将查询参数添加到表单目标 url 就足够了,这样 url 会有所不同,但您仍然可以调用相同的脚本。您可以简单地忽略该虚拟参数。在处理完 post 变量(将它们存储在您的数据库中)之后,您向浏览器发送一个重定向标头,该标头指向没有查询参数的正常 url。这样浏览器会重新加载页面而不发送 post 变量。您可以使用 phpsheader()函数进行重定向。

于 2012-11-12T06:51:06.550 回答
0

向提交输入添加名称应该可以解决问题,如下所示:

...    
<input type="submit" name="submit" value="submit"/>
if(isset($_POST['submit']) {
... 

另一方面,我认为应该是:

action="<?php $_SERVER[ 'PHP_SELF' ]; ?>"

没有“回声”。

希望这可以帮助。

于 2012-11-12T07:07:46.103 回答