如何清空表单中的$_POST变量



我有一个评论表单,提交后我很难清空我的帖子,这是我的表单:

    <?php
if(isset($_POST['comment']))
{
    $fields = array(
        "module" => db_decode($node_delta['tid']) ,
        "delta" => db_decode($node_delta['nid']) ,
        "title" => db_decode($_POST['subject']) ,
        "author" => db_decode($_POST['username']) ,
        "content" => db_decode($_POST['comment']) ,
        "status" => db_decode('pending') ,
        "date_comment" => new Zend_Db_Expr('NOW()') ,
    ) ; 
    db_insert("comment", $fields) ; 
    unset($_POST);
}
            ?>
<form class="form-horizontal" method="post" id="comment" action="" role="form">
        <input type="hidden" id="comment-element-0" value="comment" name="form">
        <input type="hidden" id="comment-element-1" value="insert" name="action">
        <div class="form-group"><label for="comment-element-2" class="control-label col-md-3">
            <span class="required">* </span>Username</label>
            <div class="col-md-6">
                <input type="text" id="comment-element-2" required="" value="" name="username" class="form-control input-md">
            </div>
        </div>
        <div class="form-group"><label for="comment-element-4" class="control-label col-md-3">
            <span class="required">* </span>Subjet</label>
            <div class="col-md-6">
                <input type="text" id="comment-element-4" required="" value="" name="subject" class="form-control input-md">
            </div>
        </div>
        <div class="form-group"><label for="comment-element-5" class="control-label col-md-3">
            <span class="required">* </span>Comment</label>
            <div class="col-md-6">
                <textarea class="form-control input-md" id="comment-element-5" required="" name="comment" rows="5"></textarea>
            </div>
        </div>
        <div class="form-group">
            <div class="form-actions col-md-9 col-md-offset-3 text-right">
                <input type="submit" id="comment-element-6" class="btn btn-primary"  name="" value="Submit">
            </div>
        </div>
</form>

这里的问题是,如果我刷新post的值仍然有相同的内容,为什么unset($_POST);不起作用?有什么帮助吗?非常感谢!

这里的问题是刷新页面,从而转发请求。为了避免这种情况,您可能应该在当前帖子之后重定向。

F/e您可以这样做,而不是取消设置($_POST(;

header("location:".$_SERVER['PHP_SELF']);die;

确保头之前没有内容,并且需要die来确保脚本不会继续。这应该会重新加载页面,并消除使用F5 发送垃圾邮件的可能性

这是您浏览器中的某些内容。由于您还没有将表单数据加载回HTML部分(到处都是空值(,因此不可能是您的脚本加载回数据。

此外,您不应该取消设置$_POST。这是一个内部变量,尽管这样做有点合法,但这是一种非常糟糕的做法——你(或其他人(脚本中的任何其他内容都可能依赖于它的存在。

你需要了解发生了什么$_POST不是罪魁祸首。检查你的浏览器扩展(也许是表单填充(。没有一种自动机制可以将变量"静默地加载回"到HTML表单中;所以除非你给出类似的东西

<input ...... value="<?=$_POST["foo"]?>">

,你的价值观不会存在。检查页面的HTML源代码。你可能也找不到这些值。这是一个明显的迹象,表明它们在页面加载后会返回,所以你(作为服务器端脚本(对此无能为力

您的浏览器会记住上一个表单的变量。它不使用$_POST数组。重定向在您的情况下是一种很好的做法。您也可以通过java脚本清理表单,但这不是一个好主意。

最新更新