通过Include中的url发送变量

时间:2014-06-26 04:40:50

标签: php

我正在尝试通过url向搜索页面发送变量“q”。但我得到错误说

  

致命错误:require():需要打开失败   'theme / _modules / contact / search.php?q = {echo $ q;}'   (include_path中= ':/ usr / lib中/ PHP:在/ usr /本地/ LIB / PHP')

这是我的代码

    if(isset($_POST['q'])){
    $q= $_POST['q'];
    }

    require 'theme/header.php';
    require 'theme/_modules/contact/search.php?q={echo $q;}';
    require 'theme/footer.php';

任何人都可以告诉我原因和方法来解决这个问题..谢谢..

这样做之后..

require 'theme/header.php';
//require 'theme/_modules/contact/search.php?q={echo $q;}';
require "theme/_modules/contact/search.php?q=$q";
require 'theme/footer.php';

我收到错误

 Warning: require(theme/_modules/contact/search.php?q=saman): failed to open stream: No such file or directory in /home/dr7bf45v/public_html/search.php on line 17

2 个答案:

答案 0 :(得分:5)

使用此:

require 'theme/_modules/contact/search.php?q='.$q;

当你使用它时......

require 'theme/_modules/contact/search.php?q={echo $q;}';

PHP从字面上解释{echo $q;},因为它包含在单引号中。通常PHP会在双引号中解释{echo $q;},但为了安全起见,请使用.将某些内容添加到字符串的末尾。如果您想在不使用$q的情况下将.括在双引号中,请执行此操作...

require "theme/_modules/contact/search.php?q=$q";

答案 1 :(得分:1)

我认为你试图以错误的方式行事。

您正在尝试完成远程包括。 (1.你必须允许它:including a remote file in PHP。2。你的链接看起来像url)。

现在您要求theme/_modules/contact/search.php?q=saman,这意味着您的脚本正在查找名为search.php?q=saman的文件。你有那个档案吗?不,只有search.php。

但是,我认为,您正在尝试将变量传递给文件scope。有更好的方法。只有require它没有额外的参数。

P.S。但是如果search.php从GET收到值并且您需要该结果,则可以使用curl,因为远程包含是危险的。