【问题标题】:WordPress session not working other than home pageWordPress 会话在主页之外无法正常工作
【发布时间】:2020-05-26 06:05:25
【问题描述】:

我尝试在 WordPress 网站主题 function.php 文件中使用 Session 变量。它适用于主页,但不适用于其他页面。

以下是我在 WordPress function.php 文件上编写的代码。 home.php 哪里有自定义登录,是通过访问代码获取网站访问权限。

add_action('init', 'start_session', 1);

function start_session() {
if(!session_id()) {
    session_start();

 }
}
 add_action('wp_logout','end_session');
 add_action('wp_login','end_session');
 add_action('end_session_action','end_session');

function end_session() {
 session_destroy();
}

$rand = $_GET['rand'];
  $id = $_GET['ID'];
  $_SESSION['invitation'] = $rand;
  $_SESSION['code'] = $id;

if (!isset($_SESSION['invitation']) && !isset($_SESSION['id']) ) {
    header("Location: https://www.website.com/home.php");

}

【问题讨论】:

  • 你为什么要在一个动作中开始会话?只需在文件顶部启动它。无需等待。应该尽早开始。
  • 我认为带有 PHP 7.2 的 WordPress 存在一些问题,如果我立即使用代码开始会话,它就无法正常工作。 session_start(); $rand = $_GET['rand']; $id = $_GET['ID']; $_SESSION['邀请'] = $rand; $_SESSION['code'] = $id; if (!isset($_SESSION['invitation']) && !isset($_SESSION['id']) ) { header("位置:website.com/home.php"); }

标签: php wordpress session


【解决方案1】:

我知道问题出在哪里了。

为了在整个过程中保持会话,您必须在所有其他页面的开头提及session_start()。在 wordpress 中,您可以通过将 session_start() 放在 header.php 中轻松实现这一点,这样每当您打开新页面时,会话都会保持其状态,以便您可以轻松访问所有页面中会话中的内容.

注意:确保在加载functions.php之前放置session_start() 有关 session_start() 的更多详细信息:https://www.php.net/manual/en/function.session-start.php

我希望这能解决您的问题.. !! :)

【讨论】:

  • 我已将所有代码移至具有相同问题的标头。也单独使用 session_start();没有帮助。
  • 我怀疑你更新了错误的标题。为了确保我所说的会起作用,我建议您将 session_start() 放在您要测试的任何其他页面的开头,看看是否有帮助。然后我们可以找出标题部分。首先让我们确保这是解决方案。
猜你喜欢
  • 2016-07-29
  • 1970-01-01
  • 2015-05-10
  • 2018-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多