繁体   English   中英

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM