文件无法根据访问者位置正确加载

时间:2014-10-28 03:44:21

标签: javascript php

我只需要小问一下,请你看看这段代码以及问题是什么,因为它只加载了 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 -

我需要使用以下网址格式正常加载此页面: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

2 个答案:

答案 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