PHP语言选择

时间:2015-02-24 13:13:39

标签: php

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

就像我在旗帜上点击一次一样,它不会留在会话变量中。

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

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

2 个答案:

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