我在页面顶部运行了一些PHP代码
if(isset($_POST['arrow1']) and isset($_POST['arrow2'])) {....}
一个将数据发送到此页面的表单。我想要做的是在顶部的php代码运行后清空变量,以便在刷新时它不会再次运行。
我如何实现这一目标?
谢谢
答案 0 :(得分:1)
if(isset($_POST['arrow1']) and isset($_POST['arrow2']))
{
unset($_POST);
}
将取消设置所有$ _POST变量。 你也可以这样做:
$_POST['arrow1'] = NULL;
$_POST['arrow2'] = NULL;
答案 1 :(得分:1)
我知道这个问题有点过时但是......
您的表单只会运行一次...或每次运行...取决于您加载页面的方式。如果表单提交POST,则取消设置是无用的。我们说顶部的表格说:
按下按钮并提交“hello world”。你按下按钮,页面获取加载(and since you dont use ajax, it has to load new)
,提交“hello world”,并在提交POST后取消设置。表格还在那里..你再次按下按钮......同样的事情再次发生。为避免这种情况,您必须使用$_SESSION
样品
if((!isset($_SESSION['arrowsWasSet']))
{
if(isset($_POST['arrow1']) and isset($_POST['arrow2']))
{
unset($_POST);
$_SESSION['arrowWasSet'] = true;
}
}
另一种方法是将数据存储到会话中并检查它是否已设置为会话。
if(isset($_POST['arrow1']) && isset($_POST['arrow2']))
{
if(!isset($_SESSION['arrows']))
{
$_SESSION['arrows']['arrow1'] = $_POST['arrow1'];
$_SESSION['arrows']['arrow2'] = $_POST['arrow2'];
}
unset($_POST);
//you can call this to get a clean post everytime, but no need.
}
你有类型吗?我的意思是,这不是array1
而不是arrow1
吗? :)
无论如何,$_SESSION
幸存下来。因此,刷新页面后,您仍然可以检查是否发生了某些事情。要清空会话,你可以这样做:
ALT
+ F5
(杀死洞穴会话)$_SESSION['xy'] = NULL;
(在会话中杀死部分)unset($_SESSION['xy']);
(在会话中杀死部分)答案 2 :(得分:0)
您只需将用户重定向到同一页面即可。
在这种情况下,在脚本执行之后,如果他想刷新页面,标题中就没有更多的变量......
<?php
header("location:[your/path.php]");