我只需要帮个小忙,你能看看这段代码吗?问题是什么,因为它只加载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>
1 Javascript-在各个国家/地区加载相应的文件
这实际上是index.php中一个名为offer.php的包含文件,根据用户所在的国家/地区动态调用其他文件。例如,如果somone来自英国,那么offer-UK.php必须加载并替换index.php 中的变量
2) PHP-
我需要使用以下URL格式正常加载此页面:www.mydomain.com/index.php?noclid=abc123
它需要使用$_REQUEST
或任何东西动态地传递noclid
变量,以使其作为www.mydomain.com/index.php?noclid=abc123
工作。在index.php文件中,我使用$_GET['clid'] = '[[clid]]';
,但问题是我希望使用noclid=abc123
而不是clid=abc123
。
php
方面的所有代码都会被编译并评估为有效的html
。
一旦页面在浏览器中呈现,javascript就会发挥作用。如果您仍然希望按照国家/地区代码include
特定的php
文件,则必须向服务器发出适当的请求。
因此,在您的情况下,由于您是用javascript获取国家/地区代码,您可能需要使用POST
或GET
请求向另一个php脚本(我们称之为foo.php
)发出请求。然后,您可以在一个非常相似的switch
语句中包含适用于不同国家/地区的适当文件。只有这个switch
语句才会位于foo.php
中。所以foo.php
可能看起来像这样:
<?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请求可以简单地为:
var country = geoplugin_countryCode();
...
$.ajax({
type: "POST",
url: "foo.php",
data: { countryid: country}
})
.done(function( msg ) {
//Ajax request completed
});
如果您不清楚如何发布帖子或获取请求并传递数据,我建议您阅读一些关于ajax的文档。不管怎样,这只是你解决问题的众多方法之一。希望它能让你朝着正确的方向开始。
正如Dagon所说。您尝试混合客户端和服务器端的代码。服务器端
如果offer.php包含在您的索引php中,它将被解析并执行所有包含。我猜他们都设置了相同的变量,所以你只能看到最后一个变量的效果。更改包含的顺序,你会发现它总是最后一个。
客户端
如果你看看你生成的html和javascript,你可能会看到这样的东西:
<script language='Javascript'>
var country = geoplugin_countryCode();
switch (country)
{
case (country = "UK"):
break;
}
...
这是因为php已经完成并生成了html输出。您可以在服务器端构建javascript代码,并将其发送到浏览器以在那里执行,但不要期望浏览器执行任何php命令。
解决方案
这取决于你的问题。但是,如果您需要服务器端的国家/地区信息,则必须将其传递给php脚本。例如用index.php调用你的index.php?country=US