wordpressのログイン状態を確認して他のプログラムに利用する方法
wordpressが乗っているサイトにwordpressと連携する別プログラムを実装したく開発していただが、不特定多数の人には触ってほしくないため、ログイン機能をつけようと計画していた。
自前でログイン機能をつけるのがめんどくさかったのでWordpressにログインしている人かどうか判定する機能をつけた
//追記
//wordpress自体の関数にログインしているか判定する関数があったので、そちらを使ったほうが安全であることがわかった
目次
WordPress純正の関数を使用する方法
require('/home/bitnami/apps/wordpress/htdocs/wp-blog-header.php'); if(!is_user_logged_in()){ header('Location: https://www.yahoo.co.jp/'); exit; }else{ echo "ログインしています"; }
上記コードはwordpressにログインしていなければyahooにリダイレクトされるというコード
WordPressの関数を利用するには「」をrequireする必要がある。上記コードはbitnamiのWordpressの場合は「」のパスのため、適宜変更すること。
COOKIEを利用する方法
wordpressにログインするとCOOKIE情報のwordpress_logged_in_xxxxxxという配列が2つ作成される。
なので、wordpress_logged_in_を含む配列名が2つあるかとカウントして2つあればログインしているユーザとして判別するようにしている。
ログオフするとwordpress_logged_in_xxxxxxが1つになる。
ただしWordpressのロールまでは見ていないので利用には注意。あくまで自前プログラム用として使うこと
if(func_checkLogin){ echo "ログインユーザ"; }else{ echo "ログインしてないユーザ"; } function func_checkLogin(){ $keys = array_keys($_COOKIE); $login = 0; $count = count( $keys ); for( $i = 0; $i < $count; ++$i ) { if(strpos($keys[$i],'wordpress_logged_in_') !== false){ $login = $login+1; } } if($login==2){ return true; }else{ return false; } }