At wp_logout_url関数が外部(Wordpress以外の)ページで機能するようにする
私が直面している問題は、サブドメインが別のサーバー上にあるという事実であるため、wp-blog-header.php
ファイルをインクルード/要求することができません。
リダイレクトホワイトリスト のように、インスタントログアウトを許可できるドメインをホワイトリストに登録できる方法はありますか。
そうでない場合は、どのようにしてサブドメイン(リモートSQLアクセス権がある)に「ログアウトしますか?」という通知をバイパスする有効なログアウトリンクを作成させることができます。
これは、ログアウトがある程度「有効」であることを確認するための論理的な回避策です。
http://website.com/custom_logout.php?confirm=sj239ks
、その後にhttp://website.com/custom_logout.php?confirm=32k9la3
それが変更されるたびに、それは特定のファイル(他のサーバー上のcustom_logout.php OR他のサーバー上のtxt/iniファイルOR他のサーバー)を編集して文字列の配列/リストを作成します
$confirmkeys = array("sj239ks", "32k9la3");
または
[confirmkeys]
confirm[] = sj239ks
confirm[] = 32k9la3
ファイルには2つの確認キーしかなく、1つは24時間前、もう1つは現在開いている24時間用のものです。
私は同じことがグローバルではなく個別に行われることができると思いますが、それについての多くの必要性がありますか?
custom_logout.php
を編集して、$_SERVER['HTTP_REFERER']
が同じドメイン(すべてのサブドメイン)から来ているかどうかを確認するためのチェックを追加します。そうであればmatching_referer
をtrueに設定します。そうでなければ、変数をfalseに設定します。
custom_logout.php
を編集して、クエリ文字列が特定のファイル内に保存されているものと一致するかどうかを確認するチェックを追加します。 (セカンダリサーバー上のtxt/iniファイルを使用するのが最も簡単ですか?)一致する場合は、matching_confirm
をtrueに設定します。そうでなければ、変数をfalseに設定します。
custom_logout.php
を編集して、片方のチェックが真にログアウトするようにし、両方とも/wp-login.php?action=logout
ページに送信して警告付きで偽のログアウトになるようにします。
Custom_logout.phpというファイルを作成して、それをルートのwordpressディレクトリに配置することができます。これは含まれています
<?php
require_once("wp-load.php"); //load wordpress
wp_logout(); //logout
exit(); //end page
?>
次に、サブドメインサイトでアンカータグを使用してURLを開きます。
<a href="http://youwebsite.com/custom_logout.php">Logout</a>
信頼できない(通常はnull)$ _SERVER ['HTTP_REFERER']を使用して、ユーザーがどこから来たのかを確認する必要があるため、ホワイトリストを簡単に作成することはできません。残念ながら、これに対する簡単な解決策はありません。
あなたの編集に返信
それが責任ある妥協案である場合、あなたは一時的なキーアプローチを完全に自由に実装することができます。ただし、2つのランダムキーの代わりに、当日のmd5ハッシュを送信することができます。両方のサーバーで同じシークレットソルトを使用してください。これで、昨日のハッシュと現在の日付をcustom_logout.phpで再計算して、受け取ったget変数と比較することができます。それはtxt/iniファイルの必要性を排除します。
あなたが両方のサイトの管理者であると仮定します...
メインのwpサイトにadmin ajaxハンドラを追加してください...
add_action( 'wp_ajax_logout', 'my_logout_callback' );
function my_logout_callback() {
wp_logout(); // Log out
header('Location: http://www.example.com/successfully-logged-out');// Maybe redirect user somewhere?
wp_die();
}
メインドメインの管理者Ajaxハンドラへのあなたのサブドメインのサイトリンクで...
<a href='//example.com/wp-admin/admin-ajax.php?action=logout'>Logout</a>