web-dev-qa-db-ja.com

別のサーバー上のサブドメイン、ワードプレス以外のページからログアウトしますか?

At wp_logout_url関数が外部(Wordpress以外の)ページで機能するようにする

私が直面している問題は、サブドメインが別のサーバー上にあるという事実であるため、wp-blog-header.phpファイルをインクルード/要求することができません。

リダイレクトホワイトリスト のように、インスタントログアウトを許可できるドメインをホワイトリストに登録できる方法はありますか。

そうでない場合は、どのようにしてサブドメイン(リモートSQLアクセス権がある)に「ログアウトしますか?」という通知をバイパスする有効なログアウトリンクを作成させることができます。

日時:@SatbirKira

これは、ログアウトがある程度「有効」であることを確認するための論理的な回避策です。

  • ログアウトURLに24時間ごとにランダムな文字列を追加したクエリ文字列を設定するには、次のように設定します。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ページに送信して警告付きで偽のログアウトになるようにします。

2
Ryflex

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ファイルの必要性を排除します。

1
Satbir Kira

あなたが両方のサイトの管理者であると仮定します...

メインの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>
2
shramee