0

私はしばらくこれをいじっています、そして私はそれが何か単純なものであることを知っています。私は別のWebサイトで基本的に同じコードを使用しましたが、問題はないようで、同じサーバーで実行されているため、サーバー側の問題ではないと思います。これは非常に単純なログインスクリプトです。

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 に答える