$ _get和session.无法让它发挥作用

Tro*_*els 0 php

谁能告诉我为什么这不起作用?

<?php
$lang = $_get["lang"];
if (($lang == "fr"))
{
    session_destroy();
    session_start(); 
    $_SESSION['lang'] == "fr";  
}

if (($lang == "en"))
{
    session_destroy();
    session_start(); 
    $_SESSION['lang'] == "en";      
}

if (isset($_SESSION['lang']))
{
    $lang = $_SESSION['lang'];
}
else
{
    $lang = "fr";            
}
?>
Run Code Online (Sandbox Code Playgroud)

我似乎无法让它工作,我尝试了很多不同的东西.只需要指出错误的方向.

如果有任何帮助,它在Apache服务器上的PHP5上运行.

即使没有会话,我也无法让$ _get工作.通常情况从来都不是这样.

hex*_*mal 15

$_SESSION['lang'] == "fr";
Run Code Online (Sandbox Code Playgroud)

两个等号表示比较算子.赋值是=(一个相等)


Pek*_*ica 9

一个显而易见的事是

$_get["lang"];
Run Code Online (Sandbox Code Playgroud)

变量在PHP中区分大小写.肯定是

$_GET["lang"];
Run Code Online (Sandbox Code Playgroud)

如果这不能解决您的问题,您需要详细描述究竟什么不起作用.


Tre*_*non 5

我重新考虑了您的代码,以便将来更容易使用.正如Pekka所说,我问或许你需要/想要$ _GET.

<?php
session_start();

$language = $_GET['lang'];

$allowable_languages = array(
    'en',
    'fr',
);

if(in_array($language, $allowable_languages)) {
    $_SESSION['lang'] = $language;
} else {
    $_SESSION['lang'] = 'fr';
}
?>
Run Code Online (Sandbox Code Playgroud)

更新:回答您的评论:

<?php
session_start();

if(isset($_GET['lang'])) {
    $language = $_GET['lang'];

    $allowable_languages = array(
        'en',
        'fr',
    );

    if(in_array($language, $allowable_languages)) {
        $_SESSION['lang'] = $language;
    }
}

if(!isset($_SESSION['lang'])) {
    $_SESSION['lang'] = 'fr';
}
?>
Run Code Online (Sandbox Code Playgroud)