我从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);
}
?>
因此使用不同的值(pt_BR,es等)调用changelocale函数,但在调用之后它并没有真正改变$ _SESSION [“locale”]值。
我做了很多研究,没有在这里或在PHP文档页面中提出的建议。有人知道在这种情况下可以做些什么吗?
提前致谢。
答案 0 :(得分:3)
您需要在页面顶部添加session_start()
,您打算设置或访问registerNib:forItemWithIdentifier:
信息。
答案 1 :(得分:0)
以下是解决方案:我在设置默认值后立即调用session_write_close();
(用于确保会话数据为&#34;解锁&#34;,因为php不允许并发写入) header.php中会话的值:
<?php
ini_set('session.cookie_domain', 'localhost');
if(!isset($_SESSION)) session_start();
if (!isset($_SESSION["locale"])) {
$_SESSION["locale"] = 'pt_BR';
}
session_write_close();
?>
然后在我的changelocale.php中,我调用了session_start()
,最后调用了session_write_close()
。现在就是这样:
<?php
if(!isset($_SESSION)) session_start();
function changelocale($new_locale) {
$_SESSION["locale"] = $new_locale;
}
if(isset($_POST['action']) && $_POST['action'] == 'changelocale'){
$l = $_POST['new_locale'];
changelocale($l);
}
session_write_close();
?>