【问题标题】:Codeigniter session in wordpresswordpress 中的 Codeigniter 会话
【发布时间】:2021-01-13 21:02:56
【问题描述】:

我在 codeigniter 中开发了一个网站,并为博客集成了 wordpress。我的问题是,如果我登录该站点,我将无法在 wordpress 博客中使用 codeigniter 会话值。

在 Codeigniter 中登录后,我将使用 codeigniter 会话设置以下会话。

$this->session->set_userdata('get_user_session', $auD);

现在我需要在 wordpress 头文件或索引文件中使用会话。我在 wordpress 中尝试了以下代码。

session_start();
print_r($_SESSION);

我没有得到上述 ci 会话值。

【问题讨论】:

  • 但我们的问题是我们需要查看一些代码才能提供帮助
  • 请提供错误信息、复制步骤或一些代码sn-ps,说明它不工作的地方。

标签: php wordpress codeigniter


【解决方案1】:

CodeIgniter 的Session class:

>> stores session information for each user as serialized (and optionally encrypted) data in a cookie

您使用$this->session->set_userdata('key','value') 设置的值不会出现在$_SESSION 变量中。

CodeIgniter 还支持将会话内容存储在数据库中。

您可以使用该配置在您的 WordPress 博客中检索会话数据。

【讨论】:

    【解决方案2】:

    使用 COOKIES 获取会话数据。 参考这个链接:https://thomashunter.name/blog/accessing-codeigniter-session-data-using-external-scripts/

    require_once("config.php");
    $cisess_cookie = $_COOKIE['ci_session'];
    $cisess_cookie = stripslashes($cisess_cookie);
    $cisess_cookie = unserialize($cisess_cookie);
    $cisess_session_id = $cisess_cookie['session_id'];
    
    $cisess_connect = mysql_connect(MYSQL_HOSTNAME, MYSQL_USERNAME, MYSQL_PASSWORD);
    if (!$cisess_connect) {
     die("<div class="error">" . mysql_error() . "</div>");
    }
    $cisess_query = "SELECT user_data FROM ci_sessions WHERE session_id = '$cisess_session_id' LIMIT 1";
    
    mysql_select_db(MYSQL_DATABASE, $cisess_connect);
    $cisess_result = mysql_query($cisess_query, $cisess_connect);
    if (!$cisess_result) {
     die("Invalid Query");
    }
    $cisess_row = mysql_fetch_assoc($cisess_result);
    $cisess_data = unserialize($cisess_row['user_data']);
    print_r($cisess_data);
    

    【讨论】:

      【解决方案3】:

      我在 wp-config.php 中使用以下代码并为我工作。

      将会话存储在 DB 中的 Codeigniter 中。

      Codeigniter 版本 3.x.x

      define('BASEPATH', 2021);
      require_once(__DIR__.DIRECTORY_SEPARATOR.'panel'.DIRECTORY_SEPARATOR.'application'.DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR."database.php");
      $cisess_cookie = $_COOKIE['ci_session'];
      
      $cisess_connect = mysqli_connect($db[$active_group]['hostname'], $db[$active_group]['username'], $db[$active_group]['password']);
      if (!$cisess_connect) {
          die("<div class='error'>" . mysqli_error($cisess_connect) . "</div>");
      }
      $cisess_query = "SELECT data FROM sessions WHERE id = '$cisess_cookie' LIMIT 1";
      
      mysqli_select_db($cisess_connect,$db[$active_group]['database']);
      $cisess_result = mysqli_query($cisess_connect,$cisess_query);
      if (!$cisess_result) {
          die("<div class='error'>" . mysqli_error($cisess_connect) . "</div>");
      }
      $cisess_row = mysqli_fetch_assoc($cisess_result);
      $session_data = $cisess_row['data'];
      
      $return_data = array();
      $offset = 0;
      while ($offset < strlen($session_data)) {
          if (!strstr(substr($session_data, $offset), "|")) {
              throw new Exception("invalid data, remaining: " . substr($session_data, $offset));
          }
          $pos = strpos($session_data, "|", $offset);
          $num = $pos - $offset;
          $varname = substr($session_data, $offset, $num);
          $offset += $num + 1;
          $data = unserialize(substr($session_data, $offset));
          $return_data[$varname] = $data;
          $offset += strlen(serialize($data));
      }
      print_r($return_data);
      exit;
      

      【讨论】:

        猜你喜欢
        • 2016-07-09
        • 2013-08-14
        • 1970-01-01
        • 2017-08-07
        • 1970-01-01
        • 1970-01-01
        • 2023-03-16
        • 2011-01-01
        相关资源
        最近更新 更多