如何在表单中清空$ _POST变量?

时间:2014-04-30 07:57:54

标签: php forms

我有一个评论表单,在提交后我无法清空帖子,这就是我的表格:

    <?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);没有做到这一点?对此有何帮助?非常感谢!

3 个答案:

答案 0 :(得分:0)

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

F / e你可以这样做而不是取消设置($ _ POST);

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

确保标题之前没有内容,并且需要使用die来确保脚本不会继续。这应该重新加载页面,并删除使用F5

垃圾邮件的可能性

答案 1 :(得分:0)

它是您浏览器中的内容。由于您尚未将表单数据加载回HTML部分(您在任何地方都提供空值),因此它不能成为加载数据的脚本。

另外,你不应该取消设置$ _POST。它是一个内部变量,虽然它有点合法,但这是非常糟糕的做法 - 你(或其他)脚本中的任何其他内容都可能依赖于它的存在。

你需要了解会发生什么。 $ _POST不是这里应该责怪的人。检查您的浏览器扩展程序(可能是表单填充程序)没有自动机制可以“无声地加载”#34;将您的变量放入HTML表单中;所以除非你给出像

这样的东西
<input ...... value="<?=$_POST["foo"]?>">

,你的价值观不会存在。检查页面的HTML源代码。您可能无法在那里找到值。这清楚地表明他们在您的页面加载后回来了 - 所以您(作为服务器端脚本)无法做到这一点。

答案 2 :(得分:0)

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