如何在php中正确使用get?

sdnqo3pr  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(372)

我花了两个小时试图找到解决问题的方法,但是我不知道为什么我的代码不起作用。
我有一个sql输出,如下所示:

function output(){
    while($row = $this->statement->fetch()) {
        $id = $row["id"];
        echo '
            <tr>
                <td>'.$row["comname"].'</td>
                <td>'.$row["district"].'</td>
                <td>'.$row["industry"].'</td>
                <td>"<a href="?details=' . $id . '">Details</a>"</td>
            </tr> 
            <br>
            ';
    }

如果有人点击“详细信息”链接,我想提供有关该公司的更多信息。因此,我将id保存在url中,以标识单击了哪个公司。为了检查是否单击了详细信息链接,我写了以下内容:
编辑:只是在提示后添加了“$id=$\u get['details']”,现在看起来是这样的:

if (isset($_GET['details'])){
        $id = $_GET['details'];
        echo $id;
    }
}

当我点击“详细信息”链接时,它会正确地更改url,但它不会打印id(我不仅要打印id,我这样做只是为了检查功能。)为什么我的代码不起作用?有没有第二个“$get”我要用?我真的不知道发生了什么事。
编辑:php代码到此结束,之后我什么也不做。
我试过了 print_r($_GET) 看起来,id甚至不在$get数组中。还有 if (isset($_GET['details'])) 语句未执行。
谢谢您!

s8vozzvw

s8vozzvw1#

你应该把照片打印出来 $_GET['details'] :

if (isset($_GET['details'])){
    echo $_GET['details'];
}

或者把它放在一个变量中:

if (isset($_GET['details'])){
    $id = $_GET['details'];
    echo $id;
}
xnifntxz

xnifntxz2#

$_GET[] 只是url中所有get参数的数组。你在电视上看到他们的例子https://www.google.com?q=stack+overflow 其中参数 q 设置为 stack+overflow . 所以如果你能回音 $_GET["q"] 在那个网址上 stack+overflow . 您可以将它存储在$id这样的变量中并将其回显,但首先需要将其设置为 $id = $_GET["details"]; 编辑:我刚刚意识到你现在的代码容易受到一种叫做xss或html注入的攻击。因为我们可以指定 $_GET["details"] 所以呢 $id 攻击者可以将html代码或 <script> 标记在那里执行危险的javascript代码对每个访问url的人。
幸运的是,有一个简单的解决方法:只需将函数 htmlspecialchars() 无论用户输入什么 echo . 这个 echo 你在这里会变成 echo htmlspecialchars($id);

相关问题