我一直在搞乱这一点,我知道这很简单。我在另一个网站上使用了基本相同的代码,它似乎没有任何问题,并且在同一台服务器上运行,所以我认为这不是服务器端问题。这是一个非常简单的登录脚本:
function user_login($username, $password) {
$passcorrect = user_checkpass($username, $password);
if ($passcorrect == "1") {
$_SESSION['eocname'] = $username;
echo("SETTING SESSION: ".$_SESSION['eocname']."<br />");
$success = "1";
} else {
$success = "0";
}
return($success);
}
这似乎是设置SESSION变量并且在functions.php文件中。
但是,刷新页面后,SESSION似乎消失了。这是page.php文件中的代码:
<?php
if (!isset($_SESSION['eocname'])) {
if (!isset($_POST['username'])) {
echo("You must login to access this page!");
echo($_SESSION['username']);
} else {
$result = user_login($_POST['username'], $_POST['password']);
if ($result == "0") {
echo("Incorrect Username or Password.");
} else {
echo("Login Successful!");
}
}
} else {
echo('Welcome back, '.$_SESSION['username'].'!');
}
?>
请注意,我确实意识到可能存在一些多余的东西,我一直在努力试图确定问题,但似乎每次$ _SESSION ['eocname']似乎都没有设置页面刷新后。
我添加了session_start();在我的functions.php文件的顶部没有错误,以确保它可以工作,但仍然没有运气。
答案 0 :(得分:1)
您应该在插件中创建一个init操作,并在函数init中启动会话。您的代码应如下所示:
add_action('init', 'initEverything');
function initEverything() {
if(!session_id()) {
session_start();
}
}
其他选项是在wp-config.php
中启动会话if(!session_id()) {
session_start();
}