从header-function加载php变量

时间:2012-12-12 23:53:19

标签: php html variables header

我想为自己的语言制作文件夹。

作为示例,我有文件foo.php。该文件还有英文版和荷兰版。

因此,我创建了目录/english/foo.php/dutch/foo.php目录中的两个文件与根文件夹中的文件完全相同。

在根文件夹root/foo.php中我加载了一个变量$var,该变量来自另一个名为root/scripts/bar.php的文件和目录

文件root/scripts/bar.php中的

我确实使用了标题函数:

if ($pref_language == 'zu'){
    $header = 'english'.$_SERVER['PHP_SELF']; 
    $var = "xyz";  
}

header ("location: $header");

问题是,当我打开root/foo.php时,标题函数应该正常工作,但$var不会在该标题方向上初始化。当我打开源代码时,

没有任何内容
<?php echo $var;?>

但是在查看没有标题的源代码时,将加载变量。

所以这对我来说有点奇怪。如果有人可以帮助我,我真的很感激。

非常感谢。

2 个答案:

答案 0 :(得分:0)

使用header("location: $header");将浏览器重定向到$header,这不是您想要的。

您可以include($header);(记录here或更多可能require记录here),然后允许$header中的文件使用定义的变量。

您真正想做的事情是国际化,并且有很好的工具可以在PHP中执行此操作,例如Twig(here)或Smarty(here

答案 1 :(得分:0)

您最好的方法是利用网络服务器中的重写规则将某些语言的URL请求定向到php文件可以使用的参数。 Apache中的一个示例可能如下所示:

RewriteEngine On
RewriteRule ^/?(english|dutch)/(.*)$ /$2?lang=$1 [L,QSA]

例如,会将/english/foo.php的请求传递给/foo.php?lang=english进行处理。

然后,您可以查看$_GET['lang']以确定要使用的本地化。

这消除了进行任何浏览器重定向的需要,并为您提供了一种很好的方法,可以将$_GET['lang']值动态地添加到您网站中的所有链接,以便为最终用户提供他们完全在英语内的外观网站(/english/*)或荷兰网站(/dutch/*)。

相关问题