[英]My php $_SESSION is not saving
我從PHP開始,所以我不知道出了什么問題。 我正在嘗試使用函數來更新$ _SESSION變量中的某些值,但無法正常工作。 首先,我啟動了會話,並在header.php中為會話設置了默認值:
<?php
session_start();
if (!isset($_SESSION["locale"])) {
$_SESSION["locale"] = 'pt_BR';
}
?>
然后,我有一些ajax調用了我的PHP函數。
$('#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文檔頁面中提出的建議均無效。 有人知道在這種情況下可以做什么嗎?
提前致謝。
您需要在頁面頂部包含session_start()
,以用來設置或訪問$_SESSION
信息。
解決方法如下:我叫session_write_close();
(用於確保會話數據將被“解鎖”,因為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();
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.