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

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

新規登録して質問してみよう
ただいま回答率
85.50%
WordPress

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

Q&A

1回答

1015閲覧

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

hiro25

総合スコア16

WordPress

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

0グッド

1クリップ

投稿2017/09/21 22:47

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

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

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

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

###ログイン処理をしているソースコード(抜粋)
```PHP
//ログイン処理
$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();
###リダイレクト先のページのソースコード(抜粋) ```PHP //ログインされているかどうかのチェック if ( !is_user_logged_in() ) { echo 'NOT LOGIN'; exit; }

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

その時のソースコードは以下のようになります。
```PHP
//ログイン処理
$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; }

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

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

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

投稿2017/09/22 00:58

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiro25

2017/09/22 02:21

ご回答ありがとうございます。 はい、$userの中身は確認しています。 また、「私が確認したこと」にも記載していますが、 ログインページ内で、ログイン後に、is_user_logged_in関数を使ってログインされているかどうかを確認し、trueが返ってきていることを確認しています。
退会済みユーザー

退会済みユーザー

2017/09/22 02:47

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

2017/09/22 03:56 編集

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

退会済みユーザー

2017/09/22 04:28

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

2017/09/22 04:32

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

退会済みユーザー

2017/09/22 04:36

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

2017/09/22 05:12

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

2017/09/22 06:58

試してみましたが、現象変わらないです。 ログインページ内でしたら、is_user_logged_in()はtrueを返すのですが、リダイレクト先のページでは、falseとなってしまいます。
退会済みユーザー

退会済みユーザー

2017/09/22 07:24

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

2017/09/22 08:05

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

退会済みユーザー

2017/09/22 08:34

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

2017/09/22 11:04

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問