在一页上提交两次数据

时间:2011-03-11 16:47:10

标签: php javascript html double-submit-problem

我问了这个question,但是有这么多垃圾代码,我这次把它分解为最小代码量。表单页面发送数据以确认页面。

确认页面回显用户数据,以便他们仔细检查。然后,如果他们点击“提交”它重新加载相同的页面发送电子邮件给我然后它更新表单操作的URL和一个小的javascript再次提交表单,而用户不知道它,因为$ url不为空。一切正常,但 javascript没有发挥作用。页面就在那里,我可以在页面源中看到javascript,所以它就在那里。

表单页面:

<form action="test.php" method="post">
    Name: <input type="text" name="name" value=""/>
    <input type="submit" name="send" value="send"/>
</form>

确认页面:

<?
ini_set("display_errors","2");
ERROR_REPORTING(E_ALL);

$url = '';
    if (isset($_POST['send']))
        {
            $data = $_POST['name'];
        }else{ 
            echo "SEND is not Set";
        }


    if (isset($_POST['submit']))
        {
            $data = $_POST['data'];
            $my_message = ' TEST DATA:<br/><br/>Child Name'. $data .'';
            $subject = 'Mike TEST';
            $headers = "From: mrawers@xxxx.com\r\n";
            $headers .= "Reply-To: mrawers@xxxx.com\r\n";
            $headers .= "Content-type: text/html\r\n";

            $url = "https://www.paypal.com/cgi-bin/webscr";

            mail("mike.rawers@xxxx.com",$my_message,$subject,$headers);
        }else{ 
            echo "SUBMIT is not Set";
        }
?>
<html>
<head>
</head>

<body>

<form action="<? echo $url; ?>" method="post">
    Name:   <? echo $data; ?><input type="hidden" name="data" value="<? echo $data; ?>"/><br/><br/>
<input type="submit" value="submit" name="submit">
</form>
<?
if ($url != "") {
?>
<script language="javascript">
document.forms[0].submit();
</script>
<?
}else{ echo "URL NOT SET";}
?>
</body>
</html>

2 个答案:

答案 0 :(得分:1)

删除这行代码而不是你得到你想要的东西:

<input type="submit" value="submit" name="submit">

为什么?

那是因为&#34;名称&#34;。 输入元素名称为&#34;提交&#34;与提交功能冲突。 你想打电话给&#34;提交&#34;功能,但broswer刚刚得到&#34;提交&#34;元件。

你可以试试这个:

alert(document.forms[0].submit);

它是一个元素。

是的,你可以执行&#34;提交&#34;功能没有&#34;提交&#34;元件。

答案 1 :(得分:0)

而不是将数据重新发布到另一个URL,为什么不在PHP中使用cURL对象在发送电子邮件后发送它?