PHP会话不保留值

PHP会话不保留值,php,session,Php,Session,我的PHP(版本5.6)会话有问题。它们不会被保存在页面之间,甚至在我刷新页面时也不会被保存 除了我所有的文件之外,我还有: <?php session_start(); 如果我这样做 var_dump($_SESSION["lang"]); 服务器返回与用户选择的语言相关的字符串(2)“fr”或字符串(2)“en”。在这之前,一切都很顺利;) 问题是,如果我刷新页面,或转到另一个页面,并尝试返回会话值,它总是空的 我知道我可以使用其他方式翻译网站,但我需要会话来实现我的应用程序的其他

我的PHP(版本5.6)会话有问题。它们不会被保存在页面之间,甚至在我刷新页面时也不会被保存

除了我所有的文件之外,我还有:

<?php
session_start();
如果我这样做

var_dump($_SESSION["lang"]);
服务器返回与用户选择的语言相关的字符串(2)“fr”或字符串(2)“en”。在这之前,一切都很顺利;)

问题是,如果我刷新页面,或转到另一个页面,并尝试返回会话值,它总是空的

我知道我可以使用其他方式翻译网站,但我需要会话来实现我的应用程序的其他功能(登录,…)

因为几天前它还在工作,我第一次认为它是服务器上的一个更改,所以我联系了服务器管理员,但他们告诉我他们没有更改任何内容。 我将PHP错误报告设置为E_ALL,但不显示任何错误

如果有人能帮我的话,那就太好了,我已经被这个错误困扰了3天了^^

谢谢

编辑:

session_start();
var_dump($_SESSION["lang"]);
if(!isset($_SESSION["lang"]) || $_SESSION["lang"] == null){
    $_SESSION["lang"] = "fr";
}
if(isset($_GET["lang"]) && ($_GET["lang"] == "fr" || $_GET["lang"] == "en")){
    $_SESSION["lang"] = $_GET["lang"];
}
var_dump($_SESSION["lang"]);

从您提供的有限代码来看,我的猜测是,
$\u GET
参数并不总是设置好的,这会将会话设置为null

试试这个

if(isset($_GET["lang"])) {
    $_SESSION["lang"] = $_GET["lang"];
} else {
    echo 'lang not set';
}

编辑:OP提供了附加代码

如果没有值,或者URL参数中没有提供可接受的值,则返回'fr'。它与您的类似,但是,我将参数检查包装在括号中,使其更紧凑,并更改了顺序。如果未提供任何内容,您的代码将返回“en”

session_start();

if(isset($_GET['lang']) && ($_GET['lang'] == 'fr' || $_GET['lang'] == 'en')) {
    if($_GET['lang'] == 'fr') {
        $_SESSION['lang'] = 'fr';
    }
    elseif($_GET['lang'] == 'en') {
        $_SESSION['lang'] = 'en';
    }
} else {
    $_SESSION['lang'] = 'fr';
}

var_dump($_SESSION['lang']);

从您提供的有限代码来看,我的猜测是,
$\u GET
参数并不总是设置好的,这会将会话设置为null

试试这个

if(isset($_GET["lang"])) {
    $_SESSION["lang"] = $_GET["lang"];
} else {
    echo 'lang not set';
}

编辑:OP提供了附加代码

如果没有值,或者URL参数中没有提供可接受的值,则返回'fr'。它与您的类似,但是,我将参数检查包装在括号中,使其更紧凑,并更改了顺序。如果未提供任何内容,您的代码将返回“en”

session_start();

if(isset($_GET['lang']) && ($_GET['lang'] == 'fr' || $_GET['lang'] == 'en')) {
    if($_GET['lang'] == 'fr') {
        $_SESSION['lang'] = 'fr';
    }
    elseif($_GET['lang'] == 'en') {
        $_SESSION['lang'] = 'en';
    }
} else {
    $_SESSION['lang'] = 'fr';
}

var_dump($_SESSION['lang']);

从您提供的有限代码来看,我的猜测是,
$\u GET
参数并不总是设置好的,这会将会话设置为null

试试这个

if(isset($_GET["lang"])) {
    $_SESSION["lang"] = $_GET["lang"];
} else {
    echo 'lang not set';
}

编辑:OP提供了附加代码

如果没有值,或者URL参数中没有提供可接受的值,则返回'fr'。它与您的类似,但是,我将参数检查包装在括号中,使其更紧凑,并更改了顺序。如果未提供任何内容,您的代码将返回“en”

session_start();

if(isset($_GET['lang']) && ($_GET['lang'] == 'fr' || $_GET['lang'] == 'en')) {
    if($_GET['lang'] == 'fr') {
        $_SESSION['lang'] = 'fr';
    }
    elseif($_GET['lang'] == 'en') {
        $_SESSION['lang'] = 'en';
    }
} else {
    $_SESSION['lang'] = 'fr';
}

var_dump($_SESSION['lang']);

从您提供的有限代码来看,我的猜测是,
$\u GET
参数并不总是设置好的,这会将会话设置为null

试试这个

if(isset($_GET["lang"])) {
    $_SESSION["lang"] = $_GET["lang"];
} else {
    echo 'lang not set';
}

编辑:OP提供了附加代码

如果没有值,或者URL参数中没有提供可接受的值,则返回'fr'。它与您的类似,但是,我将参数检查包装在括号中,使其更紧凑,并更改了顺序。如果未提供任何内容,您的代码将返回“en”

session_start();

if(isset($_GET['lang']) && ($_GET['lang'] == 'fr' || $_GET['lang'] == 'en')) {
    if($_GET['lang'] == 'fr') {
        $_SESSION['lang'] = 'fr';
    }
    elseif($_GET['lang'] == 'en') {
        $_SESSION['lang'] = 'en';
    }
} else {
    $_SESSION['lang'] = 'fr';
}

var_dump($_SESSION['lang']);
我找到了! 我的index.php文件是用UTF-8编码的,我把它改成了UTF-8,没有BOM表,它工作了! 真是奇怪的虫子,我希望它能帮助别人;)

我找到了! 我的index.php文件是用UTF-8编码的,我把它改成了UTF-8,没有BOM表,它工作了! 真是奇怪的虫子,我希望它能帮助别人;)

我找到了! 我的index.php文件是用UTF-8编码的,我把它改成了UTF-8,没有BOM表,它工作了! 真是奇怪的虫子,我希望它能帮助别人;)

我找到了! 我的index.php文件是用UTF-8编码的,我把它改成了UTF-8,没有BOM表,它工作了!
真是奇怪的虫子,我希望它能帮助别人;)

Put
echo session_id()
会话\u开始()之后。
。如果您尝试刷新页面,此值会更改?请检查您是否更改或取消设置页面顶部或其他地方的
会话
,每次刷新时它都会更改@SulthanAllaudeen我已经检查过但没有,我只在注销页面取消设置会话,这在网站的这一部分中从未被调用。如果您在一个php文件中编写
session\u start
,那么您可以将其包含在其他php文件中(这不好)。或者在每个php文件的顶部写入
session\u start
。@leggendario指出,可能还会出现另一个问题,那么您的问题是每次都会启动一个新的空会话。Put
echo session_id()
会话\u开始()之后。
。如果您尝试刷新页面,此值会更改?请检查您是否更改或取消设置页面顶部或其他地方的
会话
,每次刷新时它都会更改@SulthanAllaudeen我已经检查过但没有,我只在注销页面取消设置会话,这在网站的这一部分中从未被调用。如果您在一个php文件中编写
session\u start
,那么您可以将其包含在其他php文件中(这不好)。或者在每个php文件的顶部写入
session\u start
。@leggendario指出,可能还会出现另一个问题,那么您的问题是每次都会启动一个新的空会话。Put
echo session_id()
会话\u开始()之后。
。如果您尝试刷新页面,此值会更改?请检查您是否更改或取消设置页面顶部或其他地方的
会话
,每次刷新时它都会更改@SulthanAllaudeen我已经检查过但没有,我只在注销页面取消设置会话,这在网站的这一部分中从未被调用。如果您在一个php文件中编写
session\u start
,那么您可以将其包含在其他php文件中(这不好)。或者在每个php文件的顶部写入
session\u start
。@leggendario指出,可能还会出现另一个问题,那么您的问题是每次都会启动一个新的空会话。Put
echo session_id()
会话\u开始()之后。
。如果你尝试刷新