0

我已经搞砸了一段时间,我知道这很简单。我在另一个网站上使用了基本相同的代码,它似乎没有任何问题,并且在同一台服务器上运行,所以我认为这不是服务器端问题。这是一个非常简单的登录脚本:

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文件的顶部没有错误,以确保它可以工作,但仍然没有运气。

4

1 回答 1

1

您应该在插件中创建一个 init 操作并在函数 init 中启动会话。您的代码应如下所示:

add_action('init', 'initEverything');

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

其他选项是在 wp-config.php 中启动会话

if(!session_id()) {
    session_start();
}
于 2012-07-13T19:41:26.123 回答