PHP语言选择


PHP language selection

我有两个标志,您可以在其中单击以更改语言。但奇怪的是,它有效,但我必须点击两次才能保持这种语言。(如果我转到另一个页面,会话变量也会消失)

就像我在标志上单击一次一样,它不会停留在会话变量中。

 <?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>

并让它立即显示正确的语言,而不是单击两次。我已经将会话变量封装在链接上,所以我不确定出了什么问题。

在正确分配会话之前,根据您的注释,您的第一个片段正在执行。

尝试在代码后面包含header.php文件,在代码中评估和分配会话变量中的语言。

您还可以在header.php文件中包含初始化语言的正确会话变量的代码。只要确保它首先被执行。

我认为第二个代码片段应该是这样的:

<?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');
        }
    }
?>