我的问题是include()
在此示例中不起作用:
...
$lang = $_GET["lang"];
$id = $_GET["id"];
if ($lang == "fr"){
include ('indexFr.php?id='.$id);
}
else if ($lang == "ar"){
include ('indexFr.php?id='.$id);
}
else if ($lang == "en"){
include ('indexFr.php?id='.$id);
}
...
我使用这个:
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
switch ($lang){
case "fr":
header("Location: indexFr.php?id=".$id);
break;
case "ar":
header("Location: indexAr.php?id=".$id);
break;
case "en":
header("Location: indexEn.php?id=".$id);
break;
default:
header("Location: indexEn.php?id=".$id);
break;
}
但是,如果我想要包含其他内容(不是语言页面),我认为这是正确的代码,但它不起作用:
include ('www.monsite.com/indexFr.php?id='.$id);
我该怎么做?
答案 0 :(得分:0)
如果您的$_GET
数组已经有id
的值,那么如果您正在执行include
,则最后不需要该查询字符串。它将使用您已有的$_GET
数组并获得相同的$_GET['id']
值。
include
实际上是将外部文件的代码放入已经运行的PHP代码中。因此,例如,如果您有此文件:
<强>的index.php?ID = 5 强>
echo $_GET['id'];
include "otherfile.php";
然后是另一个文件:
<强> otherfile.php 强>
echo $_GET['id'];
输出将是:
55
因为您正在有效地创建如下所示的文件:
echo $_GET['id'];
echo $_GET['id'];
include标记不适用于查询字符串,因为它是本地文件,因此不使用查询字符串。
如果要包含来自其他域的文件,可以尝试:
include ('http://www.monsite.com/indexFr.php?id='.$id);
也就是说,包括跨域文件被认为是不好的做法,可能只包括生成的HTML而不是PHP。如果您要包含本地文件系统中的文件,那么您真的应该只使用已存在的$_GET
变量。
答案 1 :(得分:-1)
您需要指定一个完整的网址才能生效。您指定的内容将在您的本地文件系统上查找名为indexFr.php?id=123
的文件,而这不是您尝试执行的操作。你需要一个http://或https://,所以它知道要通过一个web服务器,它会传递你的参数。
http://www.php.net/manual/en/function.include.php
实际上,他们提供的示例案例与您的情况非常接近:
// Won't work; looks for a file named 'file.php?foo=1&bar=2' on the
// local filesystem.
include 'file.php?foo=1&bar=2';
// Works.
include 'http://www.example.com/file.php?foo=1&bar=2';