Php 除主页外,WordPress会话不工作

Php 除主页外,WordPress会话不工作,php,wordpress,session,Php,Wordpress,Session,我尝试在WordPress网站themes function.php文件中使用Session变量。它在主页上起作用,但在其他页面上不起作用 下面是我在WordPress function.php文件中编写的代码。在home.php上有一个自定义登录名,可以通过访问代码访问网站 add_action('init', 'start_session', 1); function start_session() { if(!session_id()) { session_start();

我尝试在WordPress网站themes 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");

}

我知道问题出在哪里了

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

注意:确保在加载函数之前放置
会话\u start()
。php
有关会话_start()的更多详细信息:


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

我知道问题出在哪里了

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

注意:确保在加载函数之前放置
会话\u start()
。php
有关会话_start()的更多详细信息:


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

为什么要以动作开始会话?只需从文件的顶部开始。不用等了。我认为WordPress和PHP7.2有一些问题,如果我立即用代码启动会话,它将无法工作。会话_start()$rand=$_GET['rand']$id=$\u GET['id']$_会话['invitation']=$rand$_会话['code']=$id;如果(!isset($_会话['invitation'])和($_会话['id']){header(“Location:);}为什么要在操作中启动会话?只需在文件顶部启动它。无需等待。它应该尽早启动。我认为使用PHP7.2的WordPress存在一些问题,如果我立即使用代码启动会话,它将无法工作。session_start();$rand=$_GET['rand'];$id=$_GET['id'];$session['invitation']=$rand;$\u SESSION['code']=$id;如果(!isset($\u SESSION['invitation'])和&!isset($\u SESSION['id']){header(“Location:);}我已经将所有代码移到了有相同问题的header。还有单独的SESSION\u start();没有帮助。我怀疑您更新了错误的标题。为了确保我所说的内容有效,我建议您将会话放在“开始”()在你想要测试的任何其他页面的开头,看看这是否有帮助。然后我们可以找出标题部分。首先,让我们确保这是解决方案。我已经将所有代码移到了标题中,但都有相同的问题。还有session_start();没有帮助。我怀疑您更新了错误的标题。为了确保我所说的内容有效,我建议您将会话_start()放在您要测试的任何其他页面的开头,看看是否有帮助。然后我们可以找出标题部分。首先,让我们确保这是解决方案。