簡體   English   中英

我的PHP $ _SESSION無法保存

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM