【发布时间】:2017-11-20 11:20:21
【问题描述】:
我从 PHP 开始,所以我不知道出了什么问题。我正在尝试使用函数更新我的 $_SESSION var 中的一些值,但没有工作。 首先,我启动会话并为会话设置一个默认值,如果它在我的 header.php 中是“未定义的”:
<?php
session_start();
if (!isset($_SESSION["locale"])) {
$_SESSION["locale"] = 'pt_BR';
}
?>
然后我有一些调用我的 PHP 函数的 ajax。
$('#change_locale_br').click(function() {
$.ajax({
type: "POST",
url: "i18n/i18n_functions.php",
data: { action: "changelocale", new_locale: "pt_BR" },
success: function() {
}
});
});
在php文件之后,我有以下代码:
<?php
function changelocale($l) {
$_SESSION["locale"] = $l;
}
if(isset($_POST['action']) && $_POST['action'] == 'changelocale'){
$l = $_POST['new_locale'];
changelocale($l);
}
?>
因此,changelocale 函数使用不同的值(pt_BR、es 等)调用,但调用后它并没有真正改变 $_SESSION["locale"] 值。
我进行了大量研究,但此处或 PHP 文档页面中提出的建议均未奏效。有人知道在这种情况下可以做什么吗?
提前致谢。
【问题讨论】:
-
您已编辑您的帖子。你试过
session_start()吗?在turning error reporting on 之后您是否收到任何错误消息? -
是的,我在 header.php 中做了(包含在所有其他页面中)。而且我没有收到任何错误消息(即使在打开错误报告之后)。
-
print_r($_SESSION)时会发生什么?尝试在设置之前/之后打印它,并确保您在帖子响应中看到更新的值(来自 javascript)。 -
它显示了正确的值,如下所示:
Array ( [locale] => es )我在页面中添加了一个 php echo 以显示此会话区域设置的当前值,但是当我刷新页面时,它显示默认值(即使响应显示不同的值) -
查看
session_id()函数。确保您的会话 cookie 已正确保存,并且页面之间的会话 ID 相同。 This post 可能会为会话错误提供一些帮助。