$ _GET不起作用

时间:2012-10-04 20:46:35

标签: php get

创建评级系统并且不通过我的$ _GET变量传输信息。代码在

之下
    if (isset($_GET['item'], $_GET['rating'])){
echo 'Works!';
}

该变量正在下面的代码中输入

  <?php echo number_format( 
        $article['rating'],1); ?>
        <div class = "rate">
            Rate:
            <?php
            for ($x =1; $x<= $maximum_rating; $x++){
            ?>
                <a href="prestige.php?item=<?php echo $article['id']; ?>&rating=<?php echo $x;?>">
                <?php echo $x; ?></a>
            <?php
            }
            ?>

我对编程很新,所以任何想法或提示都会非常感激。

2 个答案:

答案 0 :(得分:4)

你应该做几件事。

<强> 1 而不是

prestige.php?item=<?php echo $article['id']; ?>&rating=<?php echo $x;?>

使用

prestige.php?<?= http_build_query(array('item' => $article['id'], 'rating' => $x), '&amp;') ?>

这将逃避参数。 Vars $article['id']$x可能包含破坏HTML或网址的字符。

<强> 2 查看Firebug / Chrome开发工具栏中的Net选项卡。有没有重定向?发送了哪些标题?

另请查看地址栏,了解prestige.php是否真的加载了GET参数。

第3 使用XDebug之类的调试工具来逐步执行代码。您可能有一些代码可以重置$_GET变量。我个人使用IDE PHP,但它有点贵。

答案 1 :(得分:2)

您发布的代码有效。所以这个障碍必须在你没有发布的代码中:

  1. 也许prestige.php页面有一个PHP错误,阻止它显示任何内容;以仅包含<?php echo 'OK so far'; ?>
  2. 的空文件开头
  3. 也许该页面包含杀死$ _GET的代码(安全检查,框架......)。 (将页面缩小到最小工作案例,不包含/要求)
  4. 也许页面 工作,但输出被一个不合时宜的ob_end_clean()嗤之以鼻,这意味着在实际输出开始之前“清理页面”; (将页面缩小到最小工作量)
  5. 也许页面有效,字符串'Works'就在那里,但由于HTML标记,CSS或其他渲染问题而无法看到它(检查页面源代码)
  6. 网址可能已损坏,因为商品代码包含无效的网址字符(请检查浏览器地址栏中显示的内容)
  7. 可能存在干扰的URL重写方案(检查.htaccess和服务器日志)
  8. 我只记得URL中的国际字符发生了类似的事情。尝试使用ASCII清洁的项目代码来查看会发生什么。
  9. 只是为了确保:确认没有可能会干扰的auto_prepend'ed文件。
  10. 然后,它也可能是上面的多个。通常在调试时会无意中破坏某些代码,甚至在修复第一个错误之后,代码也无法再次开始工作 - 这并不意味着修复无效。

    对不起 - 我的选择已经结束了。我真的很期待知道原因是什么。 (通常我收集的解释越多,真正的答案往往是“以上都不是”。当我遇到这种情况时,有时我会想知道是否开始相信小鬼 :-()