删除url中的变量

时间:2012-07-10 21:18:58

标签: php html get

在我被告知要查看其他相似的帖子之前,请注意我已尝试应用它们但无济于事。

我需要在一系列if语句为真后清除url中的变量。我有以下代码:

<?php


$_SESSION['passlevel']='0'; 

if ($_SESSION['passlevel'] == '0')

{
if(isset($_GET['box_1_color']))
{
$color=$_GET['box_1_color'];
    if($color == "#800080")
    {
    echo "you have passed step one.";

    $_SESSION['passlevel'] = '1';

    // add something that removes url string



    }
    else 
    {
    echo "you didn't select purple.";

    }   
}
else echo "login with your colorlock passcode.";

}

if ($_SESSION['passlevel'] == '1')

{
if(isset($_GET['box_1_color']))
{
$color=$_GET['box_1_color'];
    if($color == "#DD7500")
    {
    echo "you have passed step two.";
    $_SESSION['passlevel']='2'; 
            // add something that removes url string

    }
    else 
    {
    echo "you didn't select orange.";

    }   
}
else echo "enter remaining colors.";

}


?>

这是针对颜色相关的密码,在点击div之后,10个div中的每一个的背景都会变为10种颜色中的一种(请注意,某些回声现在只作为调试方法)。信息通过多种形式发送到网址:

<form> 
<div id="box1" class="box" onclick='this.parentNode.submit()'></div>
<input type='hidden' name='box_1_color' value='<?php echo $box1color ?>'/> 
<input type='hidden' name='name' value='box1color'/> 
</form>

<form>
<div id="box2" class="box" onclick='this.parentNode.submit()'></div>
<input type='hidden' name='box_1_color' value='<?php echo $box2color ?>'/>
<input type='hidden' name='name' value='box2color'/> 
</form>

<form>
<div id="box3" class="box" onclick='this.parentNode.submit()'></div>
<input type='hidden' name='box_1_color' value='<?php echo $box3color ?>'/> 
<input type='hidden' name='name' value='box3color'/> 
</form>

<form>
<div id="box4" class="box" onclick='this.parentNode.submit()'></div>
<input type='hidden' name='box_1_color' value='<?php echo $box4color ?>'/>  
<input type='hidden' name='name' value='box4color'/> 
</form>

<form>
<div id="box5" class="box" onclick='this.parentNode.submit()'></div>
<input type='hidden' name='box_1_color' value='<?php echo $box5color ?>'/>  
<input type='hidden' name='name' value='box5color'/> 
</form>

<form>
<div id="box6" class="box" onclick='this.parentNode.submit()'></div>
<input type='hidden' name='box_1_color' value='<?php echo $box6color ?>'/> 
<input type='hidden' name='name' value='box6color'/> 
</form>

<form>
<div id="box7" class="box" onclick='this.parentNode.submit()'></div>
<input type='hidden' name='box_1_color' value='<?php echo $box7color ?>'/> 
<input type='hidden' name='name' value='box7color'/> 
</form>

<form>
<div id="box8" class="box" onclick='this.parentNode.submit()'></div>
<input type='hidden' name='box_1_color' value='<?php echo $box8color ?>'/>
<input type='hidden' name='name' value='box8color'/>
</form>

<form>
<div id="box9" class="box" onclick='this.parentNode.submit()'></div>
<input type='hidden' name='box_1_color' value='<?php echo $box9color ?>'/>
<input type='hidden' name='name' value='box9color'/>
</form>

<form>
<div id="box10" class="box" onclick='this.parentNode.submit()'></div>
<input type='hidden' name='box_1_color' value='<?php echo $box10color ?>'/> 
<input type='hidden' name='name' value='box10color'/> 
</form> 

选择其中一种颜色(紫色)后的网址示例:         http://localhost/colorlock/index.php?box_1_color=%23800080&name=box9color

所以我想删除?box_1_color =%23800080&amp; name = box9color部分。我怎么能删除它代码说“//添加删除url字符串的东西”,这样当下一个代码块启动时,在用户可以选择下一个颜色之前,它不会立即在url中使用相同的颜色代码运行?

我希望我的问题很明确(我明白这是令人困惑的),我希望它是可以回答的。谢谢。

3 个答案:

答案 0 :(得分:2)

你需要做三件事中的一件事:

  1. 使用POST。这是一个好主意,但它仍然最好与......结合使用。
  2. 处理表单后,重定向到没有URL参数的同一页面。
  3. 使用ajax处理用户输入。
  4. 与现有代码集成的最简单的可能是1和2的组合。为此,请在评论所在位置添加以下行:

    header("HTTP/1.1 303 See Other");
    header("Location: http://{$_SERVER['HTTP_HOST']}{$_SERVER['PHP_SELF']}");
    exit;
    

    ...并更改HTML中的所有<form>元素,使其显示为:

    <form method="post">
    

    ...并且显然将PHP代码中出现的所有$_GET更改为$_POST

答案 1 :(得分:1)

您可以使用POST代替GET吗?你在PHP而不是$ _GET中使用$ _POST,你永远不必担心URL中的内容 - 它总是很干净。

答案 2 :(得分:0)

尝试

unset($_GET['box_1_color']);

在您的代码的适当位置