Php如何防止页面加载时提交自动表单或使用F5刷新

时间:2018-05-31 11:36:16

标签: javascript php jquery

我有下面的表格,它的工作正常但是当我使用F5刷新页面或者然后重新提交表单。 如何阻止在页面加载或刷新时自动提交表单。但即时使用它会在onchange上提交。

我只使用它来更新数据库中的送货费用,如果我将从下拉列表中选择不同的区域。当我选择不同的区域时,它会更新数据库中的区域,但是当刷新页面时,它会选择列表中的第一行并自动提交表单并在数据库中更新该值。

cart_update_delivery.php

$uid    =   $_POST['area'];

$total  =   mysql_query("
update orders_temp
set area = '".$uid."'
where user_id = 1
");

.........

<script>
function submitForm(){
    var val = document.myform.area.value;
    if(val!=-1){
        document.myform.submit();
    }
}
</script>
<iframe name="q" style="display:none;"></iframe>

<form action="cart_update_delivery.php" method="post" target="q" name="myform">
<select onchange="submitForm();" name="area" data-placeholder="Select area" class="test">
    <optgroup label="0001">
    <option style="" value="1"> A</option>
    <option style="" value="2"> B</option>
    <optgroup label="0002">
    <option style="" value="3"> C</option>
    <option style="" value="4"> D</option>
    </optgroup>
</select>

</form>

3 个答案:

答案 0 :(得分:2)

您可以在提交

后重新加载页面
<script>
    function submitForm(){
        var val = document.myform.area.value;
        if(val!=-1){
            document.myform.submit();
            location.reload(true);
        }
</script>

答案 1 :(得分:-1)

如果我理解正确,您应该检查是否有POST数据。否则,每次加载页面时都会重写db记录。

if (isset($_POST['area'])) 
{
    $uid   = $_POST['area'];
    $total = mysql_query("
    update orders_temp
    set area = '" . $uid . "'
    where user_id = 1
    ");
}

答案 2 :(得分:-2)

在php中,您可以在更新后使用http标头将浏览器转发到新页面。标题必须先发送。

    header('Location: http://www.example.com/');

请参阅PHP: header