从POST获取转储php变量

时间:2014-01-27 10:31:37

标签: php

我在页面顶部运行了一些PHP代码

if(isset($_POST['arrow1']) and isset($_POST['arrow2'])) {....}

一个将数据发送到此页面的表单。我想要做的是在顶部的php代码运行后清空变量,以便在刷新时它不会再次运行。

我如何实现这一目标?

谢谢

3 个答案:

答案 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幸存下来。因此,刷新页面后,您仍然可以检查是否发生了某些事情。要清空会话,你可以这样做:

  • session_destroy (杀死洞穴会话)
  • 重新启动浏览器(不刷新,完全重启!杀死漏洞会话)
  • 按键 ALT + F5(杀死洞穴会话)
  • 清除Browsercache manualy (杀死洞穴会话)
  • $_SESSION['xy'] = NULL;(在会话中杀死部分)
  • unset($_SESSION['xy']);(在会话中杀死部分)

答案 2 :(得分:0)

您只需将用户重定向到同一页面即可。

在这种情况下,在脚本执行之后,如果他想刷新页面,标题中就没有更多的变量......

<?php
header("location:[your/path.php]");