0

我很困惑为什么下面的代码不起作用:

include('section_common.php?cat=' . $cat_map[$cat]['url']);

它给出:

警告:include(section_common.php?cat=cat):未能打开流:第 67 行的 C:\xampp\htdocs\1.php 中没有错误

虽然当我访问 localhost/section_common.php?cat=cat 时它运行良好,但我认为问题在于函数包含本身,因为包含的链接在浏览器中工作并且包含它会导致无法打开流。

4

4 回答 4

0

您不能在查询字符串中包含这样的文件。也许重组你的代码会让你的代码更好,更不脆弱。

于 2013-10-22T01:22:25.863 回答
0

无法将参数传递给 include 或 require。

默认

$cat= $cat_map[$cat]['url'];
include("section_common.php");

在“section_common.php”中:

echo $cat;

会议

session_start();
$cat= $cat_map[$cat]['url'];
$_SESSION["cat"] = $cat;
include("section_common.php");

在“section_common.php”中:

session_start();
echo $_SESSION["cat"];

卷曲:

$connecturl = curl_init('http://localhost/section_common.php?cat='.$cat_map[$cat]['url']);
curl_setopt($connecturl,CURLOPT_RETURNTRANSFER,true);
$output = curl_exec($connecturl);
curl_close($connecturl);
echo $output;

查询:

$.ajax({
   url: "section_common.php",
   type: "GET",
   data: {cat:"<?=$cat_map[$cat]['url']?>"},
   success: function(data){
      $("body").html(data);
   }
})
于 2013-10-22T01:23:04.240 回答
0

当你包含一个文件时,你给出了一个文件路径,它不是一个 http 请求,所以如果你给出一些参数,比如:

包括(“file.php?id=1”);

他会寻找名为“file.php?id=1”的文件,但不符合您的预期。

要做你想做的事,只需在你的脚本中设置一个变量为你的值,如果你在你能够访问你的变量之后包含你的文件:

$cat= $cat_map[$cat]['url'];

include("section_common.php"); // you can use $cat in this script

这是因为“include();” 只需复制粘贴包含的文件。但是如果你把这个脚本放在另一个地方,你就必须小心翼翼,因为他可能找不到$cat。

于 2013-10-22T01:25:48.517 回答
0

您应该为 提供一个文件名include(),但您写下的不是。如果您有一些条件情况要在 中完成section_common.php,也许您应该将参数作为$_SESSION变量传递。

于 2013-10-22T01:32:27.787 回答