我开发了一个登录和注册的网站。在该网站内,它包含一个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中;
答案 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。