2013-02-25 67 views
4

在PHP中,我想在点击按钮时更改网站的语言(英语,德语等)。这是解决这个问题的正确方法吗?使用html按钮更改网站的语言版本

<?php 
    $language; 
    if ($language == "en") { 
    include("headerEn.php"); 
    } else { 
    include("header.php"); 
    } 
?> 
<a href="index.php"><?php $language = "en"; ?> 
<img src="images/language/languageNO.png"></a> 

<a href="index.php"><?php $language = "no"; ?> 
<img src="images/language/languageEN.png"></a> 

什么是最好的方式来改变网站的语言,并保持当用户返回?

回答

6

您可以通过

<a href="index.php?language=en"> 
<a href="index.php?language=no"> 

根据像

if (!empty($_GET['language'])) { 
    $_COOKIE['language'] = $_GET['language'] === 'en' ? 'en' : 'nl'; 
} else { 
    $_COOKIE['language'] = 'nl'; 
} 
setcookie('language', $_COOKIE['language']); 

,比

if ($_COOKIE['language'] == "en") { 
    include("headerEn.php"); 
} else { 
    include("header.php"); 
} ?> 
+1

我认为else部分应该是'else if(empty($ _ COOKIE ['language']))',以避免在cookie(而不是请求)包含所选语言时将语言重置为'nl'。 – 2015-12-21 00:44:16

0

尝试饼干做到这一点,得到了语言并将其存储在cookie,并包含文件将此$language值保存到会话变量。当页面重新载入时,检查是否设置了会话变量。

如果设置使用该$language

注:

$language = $_GET['language']; 
0

你不能在PHP的HTML改变一个变量。 PHP是服务器端HTML客户端

您可以使用GET variables来更改它。这是最简单的方法。

1

要给出一个解决方案而不改变你的方法,你可以这样做。

<?php 
if(isset($_GET['language'])) 
    $language = $_GET['language']; 
else 
    $language = ""; 

if ($language == "en") { 
    include("headerEn.php"); 
} else { 
    include("header.php"); 
} ?> 

<a href="index.php?language = en"><img src="images/language/languageNO.png">  </a> 
<a href="index.php?language = no"><img src="images/language/languageEN.png"></a> 

如果你想保留的选择,你可以在这个值数据库或会话存储。

2

有一个默认值总是很好,所以你永远不会在没有语言的网站。

$language = $_REQUEST["language"]; 
$default_header="myheaderXXX.php"; 

switch ($language) { 
    case "en": 
     include("headerEn.php"); 
     break; 

    case "no": 
     include("header.php"); 
     break; 

    default: 
     include($default_header); 
} 

然后创建像这样的链接:

<a href="index.php?language=en"> 
<a href="index.php?language=no"> 
0

您可以实现这样相同的代码。我编辑了你的代码。

<?php 
$language; ?> 
<?php if ($language == "en") : ?> 
    <?php include("headerEn.php"); ?> 
    <a href="index.php"><?php $language = "en"; ?><img src="images/language/languageNO.png"></a> 
<?php else: ?> 
    <?php include("header.php"); ?> 
    <a href="index.php"><?php $language = "no"; ?><img src="images/language/languageEN.png"></a> 
<?php endif; ?> 

这将解决您的问题。