转储从POST获取的php变量
我在页面顶部运行了一些PHP代码转储从POST获取的php变量,php,Php,我在页面顶部运行了一些PHP代码 if(isset($_POST['arrow1']) and isset($_POST['arrow2'])) {....} 以及一个表单,用于将数据发送到此页面。我想做的是在顶部的php代码运行后清空变量,以便刷新时不再运行 我怎样才能做到这一点 多谢各位 if(isset($_POST['arrow1']) and isset($_POST['arrow2'])) { unset($_POST); } 将取消设置所有$\u POST变量。 你也可
if(isset($_POST['arrow1']) and isset($_POST['arrow2'])) {....}
以及一个表单,用于将数据发送到此页面。我想做的是在顶部的php代码运行后清空变量,以便刷新时不再运行
我怎样才能做到这一点
多谢各位
if(isset($_POST['arrow1']) and isset($_POST['arrow2']))
{
unset($_POST);
}
将取消设置所有$\u POST变量。
你也可以这样做:
$_POST['arrow1'] = NULL;
$_POST['arrow2'] = NULL;
您只需在同一页面上重定向用户即可 在本例中,在脚本执行之后,如果他想刷新页面,则页眉中不再有变量
<?php
header("location:[your/path.php]");
我知道这个问题有点过时,但是
您的表单将只运行一次。。。或者每次。。。取决于加载页面的方式。如果表单提交了POST,那么不安就有点无心了。假设顶部的表格上写着:
按下按钮并提交“hello world”。按下按钮,page get's load(由于您不使用ajax,它必须加载新内容)
,“hello world”被提交,提交后get's unset。表格还在那里。。你再按一下按钮。。。同样的事情再次发生。为了避免这种情况,您可能必须使用$\u会话
样品
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
?:)
无论如何,$\u会话
在刷新后仍然有效。因此,在刷新页面后,您仍然可以检查是否发生了某些事情。要清空会话,可以执行以下操作:
- 会话\u销毁(杀死洞会话)
- 重新启动浏览器(不刷新,完全重新启动!终止会话)
- 击键
ALT
+F5
(击杀孔会话)
- 手动清除浏览器缓存(清除孔会话)
$\u会话['xy']=NULL代码>(在会话中终止部分)
unset($_会话['xy'])代码>(在会话中终止部分)
通过操纵检测到表单提交后生成的HTML。在实践中,这意味着您应该执行一个。这将取消所有POST数据的设置。根据我对OP的理解,只应清空arrow1
和arrow2
。刷新页面具有相同的效果,您会怎么做?您可能希望设置为null而不是空字符串。PHP可能并不挑剔它的类型,但可读性和程序员的理智是;)PS:你也可以unset($_POST['arrow1'])代码>@待完成。虽然取消设置与将其设置为NULL几乎具有相同的效果^^^绝对,这纯粹是装饰性的,但我认为从长远来看,这非常重要;)再想一想,如果设置为NULL,则该键应该仍然存在于$\u POST中。取消设置将删除整个元素。当您在重定向标头中未使用绝对URL时,许多浏览器会失败。此外,plz使用大写字母位置
。你不会相信有些浏览器是多么挑剔,尤其是移动浏览器,即使缺少空间也会失败。