我通过得到$ value = GET [' value']来为变量设置一个值。现在我想在刷新页面时删除该值。怎么做?任何帮助。
在这个问题下面也提出同样的问题,但在那里我找不到合适的答案。
How to delete $_POST variable upon pressing 'Refresh' button on browser with PHP?
答案 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
列表中的参数:✓$remove
!= GET
):✓$remove
删除所有 GET
:✓$remove
:✓GET
:✓所有这些测试似乎都按预期工作。如果您发现任何错误,请告诉我。