【发布时间】:2014-11-08 00:57:31
【问题描述】:
所以我一直使用 $_GET 来访问文章,方法是通过 URL 传递文章 ID 并在下一页中读取此 ID,以便可以绘制与文章相关的所有值。
通过代码如下
while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) {
echo '<td><a href="Article.php?id=' . $row['ArticleID']. '"><img class="cover" src="' . $row['CoverImage']. '"></a></td>';
虽然有文章,但获取图片,制作图片链接,然后在点击图片时将“id=#”附加到 url 的末尾。
正如预期的那样,当点击链接时,我得到了这个。
www.r3gamers.com/Article.php?id=1
到目前为止一切似乎都很好,但使用此代码检索 id 并将其放入变量中
if ( (isset($_GET['id'])) && (is_numeric($_GET['id'])) ) {
$articleid = $_GET['id'];
} elseif ( (isset($_POST['id'])) && (is_numeric($_POST['id'])) ) {
$articleid = $_POST['id'];
} else {
echo '<p class="error">This page has been accessed in error.</p>'; exit();
}
总是以返回错误结束,即使它已成功附加到 URL,它也看不到该值,我不知道为什么。
值得一提的是,直到今天,这个确切的代码在实时网站上运行良好,我没有对代码进行任何更改(除了将标题移动到包含文件中,一个对这段代码没有影响的标题)而且似乎没有理由停止。 为了安全起见,我什至恢复了一个多星期前的代码(在错误开始发生之前),但这并没有修复错误。
编辑:作为对回复的回应,我使用 var_dump($_GET) 测试了返回“空”的脚本。
error_reporting(E_ALL); ini_set('display_errors', 1); 然而,这个建议根本没有给出任何反馈(我可以找到),大概意味着没有发现脚本错误?
EDIT3:由于没有发现错误,我创建了两个相当简单的文件来测试 getter 和 setter 是否正常工作。
testset.php
<a href="testget.php?id=1"><img class="cover" src="Pictures/TheLastOfUs/Cover.jpg"></a>
testget.php
<?php
var_dump($_GET);
?>
这会产生这个输出
array (size=1)
'id' => string '1' (length=1)
为了确保它确实有效,我尝试了不同的值
array (size=1)
'id' => string 'thisisatestid' (length=13)
这当然意味着“损坏”的不是我的项目,而最坏的情况是上面提到的一两个文件? (可能只是article.php)?
EDIT4:进一步测试(将初始链接从 article.php?id=".row ...." 更改为 testget.php?id=".row ...." 表明索引肯定仍在工作正如预期的那样,通过 var_dump 输出生成的 ID
那么,问题就出在 article.php 页面上。
EDIT5: VAR_DUMP($_GET); on "Article.php" 现在从 URL 中检索 id,但 GET 测试没有,所以它仍然无法正常工作(虽然我觉得终于取得了进展)
EDIT6:我已经设法让 id 传递在 localhost 上完美运行,但是在将新的工作副本上传到 godaddy 后,它仍然无法正常工作。 $_GET 值被 var_dump 检查传递,但 getter 没有成功(具有讽刺意味),因为它找不到 get 值……这绝对没有意义。
【问题讨论】:
-
您是在本地主机上还是在您的域上进行测试?您是否将更新后的代码上传到服务器?
-
做一个
var_dump($_GET)并分享内容。 -
是的,是的,我在 localhost 上进行测试,如果满意,我将其上传到服务器并在那里进行测试以确保它可以正常工作,在这种情况下,它没有。
-
如果你真的不知道它是在 $_POST 还是 $_GET 中,你可以使用 $_REQUEST。但您应该始终知道它的来源。
-
您在服务器上进行了重写?检查
.htaccess