在我被告知要查看其他相似的帖子之前,请注意我已尝试应用它们但无济于事。
我需要在一系列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中使用相同的颜色代码运行?
我希望我的问题很明确(我明白这是令人困惑的),我希望它是可以回答的。谢谢。
答案 0 :(得分:2)
你需要做三件事中的一件事:
与现有代码集成的最简单的可能是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']);
在您的代码的适当位置