質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.75%

  • WordPress

    6654questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Wordpressです。wp_signonでログイン後にリダイレクトしたページで、is_user_logged_inで確認するとログインされていない

受付中

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 457

hiro25

score 3

原因がわからず、困っております。
お力を貸していただけないでしょうか。

現象

Wordpressの関数を利用してサイト構築を行っております。
wp_signonでログイン後にリダイレクトした先のページで、
is_user_logged_inを使ってログインされているかどうかを確認すると、ログインされていないと判断されてしまうので困っております。

以下のソースコードで実行すると、リダイレクト先のページでは、
「NOT LOGIN」と表示されてしまいます。

当然、ログインページと、リダイレクト先のページは同一サーバー内に存在します。
サーバは、さくらのレンタルサーバー(スタンダード)を使っています。

ログイン処理をしているソースコード(抜粋)

            //ログイン処理
            $creds = array();
            $creds['user_login'] = $member_id;
            $creds['user_password'] = $password;
            if ( $chkSave == 'ON' ) {
                $creds['remember'] = true;
            } else {
                $creds['remember'] = false;
            }

            $user = wp_signon( $creds, true );
            if ( is_wp_error( $user ) ) {
                //ログイン失敗
                echo 'ログインに失敗しました。';
                exit();
            }

            wp_set_current_user( $user->ID );

            //バックオフィスサイトへリダイレクト
            echo "<meta http-equiv='refresh' content='0;url=" . home_url() . "/backoffice/' />";
            exit();

リダイレクト先のページのソースコード(抜粋)

    //ログインされているかどうかのチェック
    if ( !is_user_logged_in() ) {

        echo 'NOT LOGIN';
        exit;

    }

私が確認したこと

ログインページ内で、ログイン後に、is_user_logged_in関数を使ってログインされているかどうかを確認したところ、問題なくログインできていました。
以下のソースコードを実行すると、「YES LOGIN」が表示されました。

その時のソースコードは以下のようになります。

            //ログイン処理
            $creds = array();
            $creds['user_login'] = $member_id;
            $creds['user_password'] = $password;
            if ( $chkSave == 'ON' ) {
                $creds['remember'] = true;
            } else {
                $creds['remember'] = false;
            }

            $user = wp_signon( $creds, true );
            if ( is_wp_error( $user ) ) {
                //ログイン失敗
                echo 'ログインに失敗しました。';
                exit();
            }

            wp_set_current_user( $user->ID );

            //ログインされているかどうかのチェック
            if ( is_user_logged_in() ) {

                echo 'YES LOGIN';
                exit;

            }
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

0

ログインされていないと判断されてしまう

ログインできていないからそう判断しているのではないですか?
$userの中身は確認してますか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/22 11:21

    ご回答ありがとうございます。

    はい、$userの中身は確認しています。

    また、「私が確認したこと」にも記載していますが、
    ログインページ内で、ログイン後に、is_user_logged_in関数を使ってログインされているかどうかを確認し、trueが返ってきていることを確認しています。

    キャンセル

  • 2017/09/22 11:47

    ”確認”に関して少し勘違いしてました。
    ログイン処理をしているソースコードを抜粋ではなく全て提示可能ですか?

    キャンセル

  • 2017/09/22 12:56 編集

    全てを提示は難しいです。
    提示した部分のソースコードがコアなところですので、残りの部分が何か影響しているとは考えにくいです。

    キャンセル

  • 2017/09/22 13:28

    リダイレクトする前の判定でログイン済ならリダイレクト先でキャッシュが効いててNOT LOGINになってるんじゃないですか?

    キャンセル

  • 2017/09/22 13:32

    では、そのキャッシュが効いてしまっているかどうかの判断はどのようにしたらできますか?

    キャンセル

  • 2017/09/22 13:36

    判定する方法なんて知りません。
    キャッシュを消すか無効にして結果が同じならキャッシュが原因ではないことが明確になると思いますが。
    あくまで可能性の一つとして訊いてます。
    リダイレクト前の判定でログイン済なら思い浮かぶのはそんなもんでしょう。

    キャンセル

  • 2017/09/22 14:12

    とりあえず、キャッシュを消して行ってみましたが、現象は変わらなかったです。

    キャンセル

  • 2017/09/22 14:33

    ログイン出来ていてキャッシュが無関係なら、どこに問題があるのか分かりません。

    例えばこのページの方法でログインして同様にリダイレクトさせたらどうなるか、試してみてください。
    https://wordpress.stackexchange.com/questions/115498/wp-signon-does-not-authenticate-user-guidance-needed

    キャンセル

  • 2017/09/22 15:58

    試してみましたが、現象変わらないです。

    ログインページ内でしたら、is_user_logged_in()はtrueを返すのですが、リダイレクト先のページでは、falseとなってしまいます。

    キャンセル

  • 2017/09/22 16:24

    先のURLのページのコードで試すとリダイレクト先でログイン済になるので、環境に依存した問題があるようですが。

    キャンセル

  • 2017/09/22 17:05

    その環境に依存した問題が知りたいです。
    php.iniで何か設定変更すれば直るものとか。

    キャンセル

  • 2017/09/22 17:34

    サーバーやPHPの設定は無関係じゃないでしょうか?
    あえて言うならPHPのバージョンの方が重要に思いますが。

    テーマやプラグインが邪魔をしている可能背もあるので一時的にテーマを変えてみたりプラグインを全停止して結果が変わるかどうか。
    それで変わらなければコードの問題も考えられますが、上記URLのページのコードでも同じ結果ということなので、それは違うかもしれません。
    実際に試してみようと思いコードを提示いただくよう申し出ましたが、断られたのでこれ以上は分かりかねます。

    キャンセル

  • 2017/09/22 20:04

    ご回答ありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.75%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    PHPのスクリプト実行時にパスワードを入力する方法について

    以下を満たすPHPスクリプトを作成したいのですが何か実装方法などありますでしょうか? パスワード入力が必要 php hoge.php &としてバッググラウンド実行させ

  • 解決済

    自動ログインについて

    Cookieがあれば自動ログインさせるために色々試しているのですが、 ブラウザを閉じて再度login.phpにアクセスするとちゃんと <input type="email" n

  • 解決済

    会員制サイト:メールアドレスでログイン

    前提・実現したいこと Qiita:PHPとMySQLで新規登録とログインを実装する(PDO使用)を参考に、PHPで会員制サイトを作っています。 このサイトで作れるものでは、ID

  • 解決済

    簡単なログイン機能[初心者]

    前提・実現したいこと PHPで簡易ログイン機能を作りたいです。 login.htmlでidとpassを入力して、ボタンを押したら session1.phpに情報を送信して処理

  • 解決済

    PHPでクラス中のメソッドからreturnで返された場合、そのメソッド内ではreturn以降は処理さ...

    【質問】 PHPでクラス中のメソッドからreturnで返された場合、そのメソッド内ではreturn以降は処理されないという認識は間違いでしょうか? 【例】あるクラスho

  • 受付中

    PHPのFatal errorについて

    気づけばプロ並みPHP という書籍で勉強しているのですが Fatal error: Uncaught exception 'PDOException' with message

  • 解決済

    ヒアドキュメント

    PHPでサイトの作成での勉強で、ログインのモーダルウインドウを表示するようにしたんですが、全ページにつけるとなると結構たいへんで、後にデザイン変更する時も大変になるのでと思い。管理

  • 解決済

    データベースへの追加

    先日に引き続きログインシステムの作成を練習してます。 フォームでユーザー名とパスワードを入力して移動すると、 catch部分で設定したエラーが返ってきます。(データベースに追加

同じタグがついた質問を見る

  • WordPress

    6654questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • トップ
  • WordPressに関する質問
  • Wordpressです。wp_signonでログイン後にリダイレクトしたページで、is_user_logged_inで確認するとログインされていない