如何创建一个简单的PHP cookie语言切换?

Mat*_*att 7 php cookies toggle

我正在尝试设置,我认为是一个简单的语言切换.我以为我会使用PHP cookie,但它们的表现并不像预期的那样.

我已经阅读了一些cookie教程,并在StackOverflow上查看了一些类似的示例,但我必须遗漏一些东西,因为它无法让它正常工作.

我通过将其作为URL变量(lang = en或lang = ru)传递来设置语言.一切似乎都很好.但是,我现在设置cookie的代码似乎落后了一步,所以最初它没有任何价值(我希望它默认为'en'),然后如果用户点击'ENG'按钮它仍然没有值,然后如果用户点击俄语,则值显示为'en',然后如果我再次单击'ENG'按钮,则值显示为'ru'.

这是我拼凑的代码:

if( $_GET['lang'] ) {
    $lang = (string)$_GET['lang'];
    setcookie( 'lang', $lang, time() + 60*60*24*30 );
} elseif( !isset($_COOKIE['lang']) ) {
    $lang = 'en';
} else {
    $lang = $_COOKIE['lang'];
}
Run Code Online (Sandbox Code Playgroud)

一旦我有了这个工作,我打算使用cookie的值来显示使用一些条件PHP的英语或俄语菜单.

谢谢.

Mat*_*att 6

感谢所有的建议 - @Mob让我朝着正确的方向前进,即在另一个页面上处理cookie,然后将你送回第一个.

我做了一些思考和实验,我终于解决了它.我会发布下面的代码,其他任何人都想使用它.

在您的主页上放置:

<form action="language_switcher.php" method="post">
    <select name="lang">
        <option value="en"<?php if( $_COOKIE["language"] == "en" ) { echo " selected"; } ?>>English</option>
        <option value="ru"<?php if( $_COOKIE["language"] == "ru" ) { echo " selected"; } ?>>Russian</option>
    </select>
    <input type="submit" value="Select Language">
</form>

<p>Language: <?php if( isset( $_COOKIE["language"] ) ) { echo $_COOKIE["language"]; } else { echo "<em>not set</em>"; } ?></p>
Run Code Online (Sandbox Code Playgroud)

然后在另一个名为'language_switcher.php'的文件中输入以下代码:

$lang = "en";
if( isset( $_POST["lang"] ) ) {
    $lang = $_POST["lang"];
    setcookie ( 'language', $lang, time() + 60*60*24*30, '/', 'mydomain.com');
    header( "Location: /previous_page_url.php" );
}
Run Code Online (Sandbox Code Playgroud)

用户选择一种语言并单击"选择语言".然后表单将表单值发送到'language_switcher.php',它设置cookie然后将用户发送回上一页.

完成!:)