2013-10-13 46 views
0

我执行一个PHP函数基于HTTP_ACCEPT_LANGUAGE翻译我的网站,也受到用户的选择:当用户点击导航栏的链接改变对HREF变量值与PHP

<?php 
if (!isset($language)) { 
$language = explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']); 
$language = strtolower(substr(chop($language[0]),0,2)); 
} 

include("functions/content_".$language.".php"); 
?> 

用户的选择来,像这样:

<ul> 
<li><a href="portfolio.php?language=es">Español</a></li> 
<li><a href="portfolio.php?language=en">Enshlish</a></li> 
<li><a href="portfolio.php?language=fr">Français</a></li> 
</ul> 

问题是我不能获得与HREF中,总是自我定义为“ES”(我的浏览器设置为西班牙语)修改$语言的价值。

+1

尝试'$ LANG uage = $ _GET [ '语言'];'(register_globals的可能是关闭) –

回答

1

你可以试试这个

$language = isset($_GET['language']) ? $_GET['language'] : false; 
if(!$language) { 
    $language = explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']); 
    $language = strtolower(substr(chop($language[0]),0,2)); 
} 

此外,您还可以使用的功能(辅助函数)像

function setlanguage() 
{ 
    $language = isset($_GET['language']) ? $_GET['language'] : false; 
    if(!$language) { 
     $language = explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']); 
     $language = strtolower(substr(chop($language[0]),0,2)); 
    } 
    return $language; 
} 

使用它像

$language = setlanguage(); 
include("functions/content_".$language.".php"); 
+0

我喜欢用'如果(isset($ _ GET [ '语言']))'所以页面不会生成一个Apache的错误每次都加载没有$ _GET var set –

+0

@JoeT,现在好了,IMO。 –

+1

现在我重新加载&看:) –

1

你是否检查它的成立得到前$语言的价值?在register_globals关闭您需要从$ _GET变量得到它从URL得到它:
if(isset($_GET['language'])){ $language = $_GET['language']; }