如何在wordpress php代码中使用父文件夹中的会话变量

时间:2015-07-06 15:42:15

标签: php wordpress session

我开发了一个登录和注册的网站。在该网站内,它包含一个wordpress博客文件夹"博客"。我需要检查用户是否登录博客。所以我可以把按钮像#34;登录" - 如果没有登录和"仪表板" - 如果签到

在父文件夹的php文件中,我这样写了

<?php
session_start();
$_SESSION['username'] = $_POST['username'];
.......
.......
?>

我在wordpress博客的php文件中使用了以下代码来检查用户是否已登录并显示用户名。

<?php
session_start();
echo $_SESSION['username'];
....
....
?>

但它给了我这样的错误并且没有显示用户名

&#34;警告:session_start():无法发送会话缓存限制器 - 已发送的标头(输出从C:\ xampp \ htdocs \ it-itech \ blog \ wp-includes \ general-template.php:2343开始)在第42和34行的C:\ xampp \ htdocs \ it-itech \ blog \ wp-content \ themes \ dazzling \ header.php中;

3 个答案:

答案 0 :(得分:1)

发生此错误是因为输出是在会话开始之前发送的,您需要转到此页面header.php:在行号:42,其中包含名为general-template.php的文件并且看不到在会话开始之前给出一个输出。

答案 1 :(得分:1)

尝试在主题的functions.php

中使用它
add_action('init', 'myStartSession', 1);
add_action('wp_logout', 'myEndSession');
add_action('wp_login', 'myEndSession');

function myStartSession() {
if(!session_id()) {
    session_start();
}
}

function myEndSession() {
session_destroy ();
}

答案 2 :(得分:0)

您应该只编辑主题文件。听起来你可能一直在编辑WordPress核心文件。你的session_start();应该放在/ wp-content / themes / dazzling /中的header.php的最顶端,理想情况下还要检查...

if (session_status() == PHP_SESSION_NONE) {
    session_start();
}

然后你可以使用你的会话数据 - 再次你应该在页面模板中检查它是否已被设置(isset等...),理论上它可能会再次成为header.php。