PHP在页面刷新

时间:2017-10-10 23:42:01

标签: php arrays variables isset unset

我试图阻止php保持表单提交但遇到困难。这是我开始的。

<?php
echo "<form action='' method='post'>
<input id='scan' class='scan' name='scan' type='submit' value='Scanning' />
</form>";

if(isset($_POST['scan'])){
echo "Very good!"
}
?>

我尝试了以下内容:

if(isset($_POST['scan'])){
echo "Very good!"
unset ($_POST);
}
if(isset($_POST['scan'])){
echo "Very good!"
unset ($_POST['scan']);
}
if(isset($_POST['scan'])){
echo "Very good!"
exit();
}
if(array_key_exists('scan',$_POST)){
echo "Very good!"
unset ($_POST);

}

我似乎无法弄明白。当我刷新页面或单击后退箭头进入此页面时,我希望重置$ _POST。在这个例子中,我希望文本&#34;非常好!&#34;在页面刷新时不显示。

1 个答案:

答案 0 :(得分:0)

正如John Conde建议的那样,POST / REDIRECT / GET模式会很有用。他分享的链接将为您提供良好的合作基础。您需要处理POSTed数据而不输出任何内容,然后重定向,然后输出。

您可以过度简化并将帖子数据转储到会话变量,并在重定向的页面上处理它。

if($isset[$_POST['scan'])) {
    $_SESSION['post_data'] = $_POST;  
    header('Location: index.php', true, 303);
}

或者你可以在POSTed页面上完成所有繁重的工作,然后重定向到输出页面。

if($isset[$_POST['scan'])) {
    // do stuff with $_POST that doesn't output.  
    // Store results server-side with reference
    // like a $_SESSION or an id.
    header("Location: index.php?id=$id", true, 303);
}