Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中多个GET变量的疑难解答_Php_Get_Httprequest - Fatal编程技术网

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>