如何通过页面刷新删除php变量值

时间:2015-12-28 19:08:06

标签: php

我通过得到$ value = GET [' value']来为变量设置一个值。现在我想在刷新页面时删除该值。怎么做?任何帮助。

在这个问题下面也提出同样的问题,但在那里我找不到合适的答案。

How to delete $_POST variable upon pressing 'Refresh' button on browser with PHP?

1 个答案:

答案 0 :(得分:0)

此代码会删除_GET

中的所有内容
// Need to check to prevent loop
if(empty($_GET)){
    // DO SOMETHING ON SECOND LOAD AFTER REMOVING
}else{
    // Do something with _GET before removing
    header('Location: ' . basename(__FILE__));
}

如果你想要从GET中删除特定值,请使用我的小野兽(此代码允许你在删除之前做一些事情):

// Removes $arr keys from GET
function removeGETKeys($arr = array()){
    $tmp = array();
    foreach($arr as $v){
        $tmp[$v] = '';
    }
    return array_diff_key($_GET, $tmp);
}

// Checks if the keys are already removed
function checkRemoved($arr = array()){
    foreach($arr as $v){
        if(array_key_exists($v, $_GET)){
            return false;
        }
    }
    return true;
}

// The keys to remove from GET
$remove = array('foo', 'bar');

// Prevent page loop
if(checkRemoved($remove)){
    // Do something on second load AFTER removing
    echo 'Result: <br>';
    print_r($_GET);
}else{
    // Do something with _GET BEFORE removing
    $removed = removeGETKeys($remove);
    $path = basename(__FILE__);
    $i = 0;
    // recreate the keys
    foreach($removed as $k => $v){
        $path .= $i==0 ? "?$k=$v" : "&$k=$v";
        $i++;
    }
    // redirects without the selected keys
    header('location: ' . $path);
}

示例链接:

t1.php?foo=123&bar=123&value=123

最终链接:

t1.php?value=123

最终页面内容:

Result: 
Array ( [value] => 123 )

<小时/> 我以不同的方式对此进行了测试,但可能仍有bug。 测试了以下内容:

  • 获取不在$remove列表中的参数:✓
  • 删除 GET参数($remove!= GET):✓
  • $remove删除所有 GET:✓
  • 清空$remove:✓
  • 清空GET:✓

所有这些测试似乎都按预期工作。如果您发现任何错误,请告诉我。