当我的页面有GET参数时,include()不起作用


include() doesn't work when my page has GET param

我有一个header.php文件包含我的DOCTYPE和我所有的链接/脚本。

我使用

<?php
// HTML DOCTYPE insert
include 'header.php';
?>

在我所有的页面的顶部,每个人只有一个标题,它工作得很好。

现在,我有另一个页面,它从数据库中获取产品信息的摘要。当有人点击"阅读更多"链接时:

<p>
    <a href="display_product.php/?id='$myProductId'">read more...</a>
</p>

另一个页面打开,显示完整的信息…

但是在我的新页面(display_product.php/id=[anynumber])我包含的文件不工作。所以我没有导航栏,没有脚本,没有样式表。只有我的数据库中的文本。

和奇怪的事情是,当我复制/粘贴我生成的display_product页面的HTML,并在我的浏览器上启动它,它的工作…oo
所以生成的代码是好的。

第二个奇怪的事情是,当我摆脱了/?id...我的布局工作良好(但我没有文本了,当然)

你们有人知道为什么会发生这种疯狂的事情吗?

"嗨,伙计们,非常感谢弗雷德-这是它。效果很好。谢谢sergiodebcn的关心。"

既然给出了其他答案,并没有解决实际问题,我把我的评论贴在一个答案上,以结束这个问题。

  • 删除/?id
  • 中的斜杠

斜杠试图指示服务器可能在文件名之后找到一个文件夹,技术上看起来就像这里发生的事情。

对于有路径问题的includerequire函数,最终的解决方案是使用您想要包含或需要的文件的绝对文件系统路径。

。你可以说:

include("C:''www''app''incs''header.php");

提示要了解如何动态地为项目设置include的绝对路径,请查看cakephp框架的两个文件的源代码:

  • index . php
  • webroot/index . php