PHP中多个GET变量的疑难解答
这可能是一个非常简单的问题,但我不知道我在这里做错了什么 为了清楚地向您解释,我在下面设置了一个真正简单的示例:PHP中多个GET变量的疑难解答,php,get,httprequest,Php,Get,Httprequest,这可能是一个非常简单的问题,但我不知道我在这里做错了什么 为了清楚地向您解释,我在下面设置了一个真正简单的示例: <ul> <li><a href="test.php?link1=true">Link 1</a></li> <li><a href="test.php?link2=true">Link 2</a></li> <li><a href="
<ul>
<li><a href="test.php?link1=true">Link 1</a></li>
<li><a href="test.php?link2=true">Link 2</a></li>
<li><a href="test.php?link3=true">Link 3</a></li>
</ul>
<?php
if(isset($_GET['link1'])) {
if(($_GET['link1']) == 'true') {
echo 'This Is Link 1';
}
}
if(isset($_GET['link2'])) {
if(($_GET['link2']) == 'true') {
echo 'This Is Link 2';
}
}
if(isset($_GET['link3'])) {
if(($_GET['link3']) == 'true') {
echo 'This Is Link 3';
}
}
?>
这个url的输出是这是链接1
现在,如果我将此url更改为:
http://localhost/test.php?link3=true&link2=true&link1=true
我得到的输出是这是链接1这是链接2这是链接3
现在这里没问题,但是如果有人键入这个,然后在另一个下面查看表单,这很烦人,我能阻止这种篡改吗?使用elseif而不是单独的if语句。这样,将只执行一个(第一个条件为true)
您使用的是连续的
if
语句,因此可以满足所有情况,并且可以回显所有输出
if(isset($_GET['link3'])) {
if(($_GET['link3']) == 'true') {
echo 'This Is Link 3';
}
}
// Nothing stops the next if working here.
您可以查看switch语句,检查第一个语句,或者使用相同的
?link=
,并在每个链接中向其传递不同的数据,以便只满足一个if
语句。更可靠的方法可能是为每个链接使用相同的参数名称,但改变值。e、 g
<a href="test.php?link=link1">Link 1</a>
<a href="test.php?link=link2">Link 2</a>
<a href="test.php?link=link3">Link 3</a>
这样,即使有人在查询字符串中指定了多个值,也只会使用其中一个。u否则,如果执行第一个具有正确条件的语句,其余的就不会了……@TWCrap&Touki Thank这是可行的,我知道我遗漏了一些非常小的东西没有问题,很高兴我能帮忙:我认为使用elseif更合适+1这是一个很好的选择,取决于更广泛的应用。尼斯1兄弟~这实际上是一个完美的方式,更干净+1.
if(isset($_GET['link3'])) {
if(($_GET['link3']) == 'true') {
echo 'This Is Link 3';
}
}
// Nothing stops the next if working here.
<a href="test.php?link=link1">Link 1</a>
<a href="test.php?link=link2">Link 2</a>
<a href="test.php?link=link3">Link 3</a>