我只需要小问一下,请你看看这段代码以及问题是什么,因为它只加载了 ph.php 文件,即使用户来自美国也是如此。假设是 us.php :
<script language='Javascript'>
var country = geoplugin_countryCode();
switch (country)
{
case (country = "UK"):
<?php include( "../../uk.php"); ?>
break;
case (country = "US"):
<?php include( "../../us.php"); ?>
break;
case (country = "PH"):
<?php include( "../../ph.php"); ?>
break;
}
</script>
这实际上是index.php中名为offer.php的包含文件,它动态调用其他文件取决于用户所在的国家/地区。例如,如果somone来自英国,那么offer-uk.php必须加载并替换index.php中的变量
我需要使用以下网址格式正常加载此页面:www.mydomain.com/index.php?noclid=abc123
它需要使用noclid
或其他任何内容动态传递$_REQUEST
变量,以使其作为www.mydomain.com/index.php?noclid=abc123
工作。在 index.php 文件中,我执行了$_GET['clid'] = '[[clid]]';
,但问题是我希望noclid=abc123
不是clid=abc123
。
答案 0 :(得分:3)
正如许多人所指出的那样,您可能会混淆服务器和客户端资源的获取方式。您需要了解这一点,当您提交对该资源的请求时,php
方面的所有代码都会被编译并评估为有效的html
。
在浏览器中呈现页面后,javascript就会生效。如果您仍希望根据国家/地区代码include
具体php
个文件,则必须向服务器发出适当的请求。
因此,在您的情况下,因为您在javascript中获取国家/地区代码,您可能想要使用foo.php
或{{1}向另一个PHP脚本(我们称之为POST
)发出请求请求。然后,您可以在非常相似的GET
语句中为不同的国家/地区包含相应的文件。只有switch
声明会出现在switch
中。所以foo.php
看起来像这样:
foo.php
ajax请求可能只是:
<?php
$country= $_POST['countryid']; //Assuming you are making a post request and passing 'countryid'
switch ($country) {
case "UK":
include( "../../uk.php");
break;
case "US":
include( "../../us.php");
break;
case "PH":
include( "../../ph.php");
break;
default:
//if you want to handle this case..
}
?>
如果您不清楚如何发帖或获取请求以及传递数据,我建议您阅读ajax上的一些文档。无论如何,这只是解决问题的众多方法之一。希望它能让你开始朝着正确的方向前进。
答案 1 :(得分:0)
正如Dagon所说。您尝试混合客户端和服务器端代码。
如果您的索引php中包含了offer.php,则会对其进行解析,并执行所有包含。我猜他们都设置了相同的变量,所以你只看到最后一个的效果。更改您的包含的顺序,您将看到它始终是最后一个。
如果您查看生成的html和javascript,您可能会看到如下内容:
<script language='Javascript'>
var country = geoplugin_countryCode();
switch (country)
{
case (country = "UK"):
break;
}
...
这是因为你的php已经完成并生成了html输出。您可以在服务器端构建javascript代码并将其发送到浏览器以在那里执行,但不要期望浏览器执行任何php命令。
取决于您的问题。 但是如果您需要服务器端的国家/地区信息,则必须将其传递给php脚本。例如使用index.php?country = US
调用index.php