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;
}
}