2013-04-27 63 views
0

我正在使用require_once来调用脚本,该脚本会回显HTML页面的页脚。我的每个页面都在PHP文件的URL中提交一个变量来通过$ _GET进行检索,但是因为它没有看到具有完整URL名称的文件(包括变量),所以它不起作用。任何工作在这里?需要URL中的变量的文件

错误:

Warning: require_once(footer/footer.php?page=homepage) [function.require-once]: failed to open stream: No such file or directory in /home/content/05/10838405/html/index.php on line 434 

如果我删除了 '?页=主页' 它完美的作品。

回答

2

只需使用一个变量

$page = 'homepage'; 
require_once 'footer/footer.php'; 

然后在我们的footer.php可以使用$page

+0

不知道它的工作很像这样。因为你是第一个,所以我会接受你的。对不起里克! – 2013-04-27 20:50:19

+0

不是问题,我会在我的打字速度:) – 2013-04-27 20:51:35

1

require_once是当地包括,通过一个HTTP请求其不会所以像查询字符串不会工作。

做这样的事情:

$page = 'homepage'; 
require 'footer.php' 

$页面将提供给footer.php

编辑:殴打像姜继子女

补充阅读:PHP Manual: Require Once

+0

另外,不要使用需求一次,除非你必须,它会增加开销。在这种情况下并不重要,但最好是养成良好的习惯。 – 2013-04-27 20:51:02

+0

无论如何都是因为你的编辑而受到你的回答,但唉,我会接受第一个。虽然谢谢! – 2013-04-27 20:51:02

+0

是的,我的意思是...我必须在这种情况下使用它吗?不是。足够便利的是,在页面的每个页面上使用相同的文本,并且只需要一个单独的脚本处理我愿意处理小型企业网站上的额外开销的详细信息?对。 ;) – 2013-04-27 20:52:07

0

原因你有这个问题是因为require_once将寻找一个名为'footer.php?page = homepage'的文件不存在在你的文件系统上。 Romainberger的解决方案很好。

2

GET参数是HTTP URL的一部分 - 但是您的服务器的本地文件系统会“说”HTTP。

所以footer/footer.php?page=homepage会从字面上的意思是该名称的文件(不存在的,字符?=在许多文件系统“非法”的文件/目录名的部分)。

既然你问了一个解决办法 - 两个简单的可能性(在这两种情况下,只需要通过它的文件的实际名称,footer/footer.php,当然):

  1. 你重新写里面的代码文件使用“正常”变量来决定它应该输出什么 - $page。包括文件之前$_GET['page'] = 'homepage'; - (虽然这可能会导致与变量的作用域问题,如果$_GET['page']在该文件中的函数内使用)

  2. 在你的脚本,并包括自己设置GET参数。从语法的角度来看,这在PHP中是完全合法的 - 从语义上讲,人们可能会以不同的方式看待;也可能导致问题,如果在其他代码中进一步确定了GET参数,并且在该上下文中不期望值homepage

+0

第二种解决方案在这种情况下没有意义,尽管第一种解决方案是其他人推荐的解决方案。我不知道以前声明的变量传递给被调用的脚本。我遇到这个问题是件好事!谁知道未来会发生什么样的暴行呢? – 2013-04-27 20:55:34