有谁能告诉我为什么这不起作用?
<?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";
}
?>
我似乎无法让它工作,我尝试了很多不同的事情。只需要指出错误的方向。
如果有任何帮助,它在Apache服务器上的PHP5上运行。
即使没有会话,我也无法让$ _get工作。通常情况并非如此。
答案 0 :(得分:15)
$_SESSION['lang'] == "fr";
两个等号表示比较运算符。 赋值是=(一个等于)
答案 1 :(得分:9)
一个显而易见的事情是
$_get["lang"];
变量在PHP中区分大小写。一定是
$_GET["lang"];
如果这不能解决您的问题,您需要详细描述究竟什么不起作用。
答案 2 :(得分: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';
}
?>
更新:回答您的评论:
<?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';
}
?>
答案 3 :(得分:0)
你只犯了一个错误,即你使用错误的语法应该是$ _GET ['lang'];
答案 4 :(得分:0)
您的代码不起作用,因为在session_destroy()之后无法直接使用session_start()。顺便说一句,你不需要破坏会话。只需重新定义您的变量:
$lang = 'fr';
if(isset($_GET['lang']) && in_array($_GET['lang'], array('fr', 'en'))) $lang = $_GET['lang'];
$_SESSION['lang'] = $lang;
对于那些认为问题是小写变量的人 - PHP变量不区分大小写。
答案 5 :(得分:0)
你是对的。有很多不同的错误。 “=”和“==”问题加上$ _GET区分大小写的问题。 这里的代码我上帝工作$ _GET加上会话。 非常感谢。我花了一整夜的时间试图找到那些错误加上我认为我得到了错误盲目。
<?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";
}
?>