我有两个标记,您可以在其中单击以更改语言。 但奇怪的是,它有效,但我必须点击两次以保持语言。 (如果我转到其他页面,会话变量也会消失)
就像我在旗帜上点击一次一样,它不会留在会话变量中。
<?php
if(!isset($_SESSION['lang']))
{
$_SESSION['lang'] = "NL";
}
if($_SESSION['lang'] === "EN")
{
?>
<div class="language-selector">
<a href="page.php?id=1&lang=NL">
<img src="img/nlnon.png" onmouseover="this.src='img/nlact.png'" onmouseout="this.src='img/nlnon.png'"/>
</a>
<a href="page.php?id=1&lang=EN">
<img src="img/enact.png" onmouseover="this.src='img/enact.png'" onmouseout="this.src='img/enact.png'"/>
</a>
</div>
<?php
}
if($_SESSION['lang'] === "NL")
{
?>
<div class="language-selector">
<a href="page.php?id=1&lang=NL">
<img src="img/nlact.png" onmouseover="this.src='img/nlact.png'" onmouseout="this.src='img/nlact.png'"/>
</a>
<a href="page.php?id=1&lang=EN">
<img src="img/ennon.png" onmouseover="this.src='img/enact.png'" onmouseout="this.src='img/ennon.png'"/>
</a>
</div>
<?php
}
?>
这是显示每个页面的正确语言的代码(现在只有一个)
<?php if($page_id == 1){
if(isset($_GET['lang']))
{
$language = $_GET['lang'];
if($language == "EN")
{
$_SESSION['lang'] = "EN";
include('includes/EN/onskantoorEN.php');
}
else
{
$_SESSION['lang'] = "NL";
include('includes/NL/onskantoorNL.php');
}
}
else
{
$_SESSION['lang'] = "NL";
include('includes/NL/onskantoorNL.php');
}
?>
总结一下:
我想点击<img src="img/nlnon.png>
或<img src="img/nlennon.png>
让它立即显示正确的语言,而不是单击两次。 我已将会话变量包装在链接周围,所以我不确定会出现什么问题。
答案 0 :(得分:0)
在您的评论中,在正确分配会话之前,您的第一个代码段正在执行。
尝试在您评估的代码之后包含header.php文件,并在会话变量中分配语言。
您还可以在header.php文件中包含用于初始化语言的正确会话变量的代码。只要确保它先被执行。
答案 1 :(得分:0)
我认为第二个代码段应该是这样的:
<?php
if ($page_id == 1) {
if (isset($_GET['lang'])) {
$language = $_GET['lang'];
$_SESSION['lang'] = $language; // todo: validate the GET parameter
} else {
$language = $_SESSION['lang'];
}
if ($language == "EN") {
include('includes/EN/onskantoorEN.php');
} else {
$_SESSION['lang'] = "NL";
include('includes/NL/onskantoorNL.php');
}
}
?>