如何在php中正确使用GET?
我花了两个小时试图找到解决问题的方法,但我不知道为什么我的代码不起作用 我有一个sql输出,如下所示:如何在php中正确使用GET?,php,html,sql,Php,Html,Sql,我花了两个小时试图找到解决问题的方法,但我不知道为什么我的代码不起作用 我有一个sql输出,如下所示: function output(){ while($row = $this->statement->fetch()) { $id = $row["id"]; echo ' <tr> <td>'.$row["comname"]
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>
';
}
当我点击“详细信息”链接时,它会正确地更改URL,但不会打印id。(我不仅想打印id,我这样做只是为了检查功能。)为什么我的代码不起作用?还有第二个“$GET”我必须使用吗?我真的不知道发生了什么事
编辑:php代码到此结束,之后我什么也不做
Edit2:我尝试了print\r($\u-GET)
,但看起来,id甚至不在$GET数组中。另外,if(isset($\u GET['details'))
语句也不会执行
谢谢大家! 您应该打印
$\u GET['details']
:
if (isset($_GET['details'])){
echo $_GET['details'];
}
或者将其放入变量中:
if (isset($_GET['details'])){
$id = $_GET['details'];
echo $id;
}
只是URL中所有GET参数的数组。例如,您可以在参数q
设置为stack+overflow
时看到它们。因此,如果您在该URL上回显$\u GET[“q”]
,您将获得堆栈+溢出
。您可以将其存储在$id之类的变量中并将其回显,但首先需要将其设置为$id=$\u GET[“details”]代码>
编辑:我刚刚意识到您现在的代码容易受到名为或HTML注入的攻击。由于我们可以指定被回送的$\u GET[“details”]
和$id
,攻击者可以将HTML代码或
标记放在其中,在访问URL的每个人身上执行危险的JavaScript代码
幸运的是,有一个简单的修复方法:只需将函数htmlspecialchars()
放在用户输入的任何内容周围echo
。这里的echo
将成为echo htmlspecialchars($id)代码>谢谢您的回答!我试过了,但没用。没有错误或什么,只是什么也没有发生。请尝试打印($\u GET)例如,在打开PHP标记后进行测试时,检查GET ArrayAdd中放置的内容并将其添加到文件的顶部。即使您是在配置为LIVE的服务器上开发,现在也会看到任何错误即使在实时环境中也要从PHP中获取错误,请将这4行添加到要调试ini\u集(“显示错误”,1)的任何基于MYSQLI\u
的脚本的顶部;ini_集(“日志错误”,1);错误报告(E_全部);mysqli_报告(mysqli_报告错误| mysqli_报告严格)代码>。这将强制任何MYSQLI\uuu
错误生成一个异常,您可以在浏览器上看到该异常以及正常的PHP错误。您已在没有任何注释的情况下更改了代码。首先是echo$id代码>无$id=$\u获取['details']代码>这说明它不起作用。现在您已经添加了$id=$\u GET['details']代码>没有任何解释或注释。如果我们不知道您的实际代码是什么以及它的结果是什么,那么我们该如何帮助您呢?你试过了吗?它工作了吗?在显示代码之后,还向我们展示脚本中的其他代码。这可能会对你为什么看不到任何输出产生一些影响。我试过了(现在也只是在问题的代码中添加了这个),但仍然不起作用。没有错误消息,只是什么也没发生。你提供的代码对我来说很好,你确定1。URL看起来像site.com/page.php?details=42
和2。没有打印身份证?尝试查看源代码(Ctrl+U)并搜索(Ctrl+F)您指定的数字。我刚刚意识到您的代码容易受到XSS攻击。看看我回答中的编辑,我检查了一下,希望打印的内容只是隐藏在某个地方,但什么都没有。URL工作正常,看起来和你写的一模一样。。。但是$GET数组似乎没有收到id。。。Idk如果有必要的话,但是在php代码上面我写了一个html表单,$GET数组只包含这个表单中的值,而不是php-code中的id。让我们找出问题所在。您是否可以尝试打印固定为echo“42”
而不是$id的内容。如果这样做有效,我们知道这与未设置$id变量有关
if (isset($_GET['details'])){
$id = $_GET['details'];
echo $id;
}