Php 检查cookie和会话值

Php 检查cookie和会话值,php,model-view-controller,multilingual,gettext,Php,Model View Controller,Multilingual,Gettext,我正在一个多语言网站上工作,我现在有一个问题。当$\u GET['setlang']为空时,language设置为en\u US,即使我以前打开过?setlang=pl(工作正常-语言正在更改) 在运行?setlang=pl操作后,我无法让此脚本将语言更改为pl\u pl。当此get为空时,cookie值将更改为en_US/ 我应该如何检查并避免此问题 我还与MVC合作。这个代码似乎正确吗?或者我应该在模型中而不是控制器中添加一些代码吗?您启动了会话吗?如果没有,则无法设置或查询会话变量 使用s

我正在一个多语言网站上工作,我现在有一个问题。当$\u GET['setlang']为空时,language设置为en\u US,即使我以前打开过?setlang=pl(工作正常-语言正在更改)

在运行?setlang=pl操作后,我无法让此脚本将语言更改为pl\u pl。当此get为空时,cookie值将更改为en_US/

我应该如何检查并避免此问题


我还与MVC合作。这个代码似乎正确吗?或者我应该在模型中而不是控制器中添加一些代码吗?

您启动了会话吗?如果没有,则无法设置或查询会话变量

使用session_start()

if((isset($\u SESSION['lang'])和&$\u SESSION['lang']=='en\u US')
||(isset($\u COOKIE['lang'])和&$\u COOKIE['lang']=='en\u US'))

=
进行比较,而不是
=
这样你就可以分配
'en_US'
任何
$\u会话[“lang”]
$\u COOKIE[“lang”]
是什么。

谢谢你的代码:)我需要做一些更改以使其工作,因为当某人想要更改语言时,COOKIE设置好了,无论如何都不能这样做:)
$lang = "";

// Check if lang cookie is set
if(isset($_COOKIE['lang']))
{
    $lang = $_COOKIE['lang'];
}
// Cookie is not set
else
{
// Get language GET variable
    $set_lang = (empty($_GET['setlang'])) ? '' : $_GET['setlang'];

    switch($set_lang)
    {
        case 'en':
            $lang = "en_US";
        break;

        case 'pl':
            $lang = "pl_PL";
        break;

        default:
            $lang = "en_US";
        break;
    }

    // Set language cookie
    setcookie('lang', $lang, time()+60*60*24*365);
}

// Set locale
putenv('LC_ALL=' . $lang);
setlocale(LC_ALL, $lang . ".UTF8");
$lang = "";

// Check if lang cookie is set
if(isset($_COOKIE['lang']))
{
    $lang = $_COOKIE['lang'];
}
// Cookie is not set
else
{
// Get language GET variable
    $set_lang = (empty($_GET['setlang'])) ? '' : $_GET['setlang'];

    switch($set_lang)
    {
        case 'en':
            $lang = "en_US";
        break;

        case 'pl':
            $lang = "pl_PL";
        break;

        default:
            $lang = "en_US";
        break;
    }

    // Set language cookie
    setcookie('lang', $lang, time()+60*60*24*365);
}

// Set locale
putenv('LC_ALL=' . $lang);
setlocale(LC_ALL, $lang . ".UTF8");