0

私は Wordpress サイトを持っており、登録していない限り、ログインへのリダイレクトのように、一般にロックしたいと考えています。だから今私が使用しているコードは次のとおりです。

<?php
if ( is_user_logged_in() ) {

} else {
 $coolio=curPageURL();
 if (strpos($coolio,'register.php') !== false) {
 break;
 }
 else{
  echo "<script>window.location = 'http://example.com/wp-login.php'</script>";
  break;
 }
 if (strpos($coolio,'login.php') !== false) {
 break;
 }
 else{
  echo "<script>window.location = 'http://example.com/wp-login.php'</script>";
  break;
 }
}
?>

動作するはずですが、アクセスしたページで無限ループが発生します。理由を知っている人はいますか?

注:curPageUrl現在のページの URL を返すだけです。

4

2 に答える 2

2

投稿したコードには、重大なセキュリティ上の問題がいくつかあります。

  • ユーザーは、JavaScript を無効にするだけで、リダイレクトされないようにすることができます。
  • ユーザー?register.phpは URL に追加するだけで、リダイレクト コードのトリガーを回避できます。

代わりに、サーバー側のセッション変数チェックを使用してください。セッション内で「ログイン済み」フラグが設定されていない場合は、ログイン ページにリダイレクトされます。

これには 2 つの大きな利点があります。

  1. ログイン状態は、ログインすることを除いて、ユーザーがそれを操作するために何もできない場所に保持されます
  2. 悪意のあるユーザーがセッション Cookie を破棄すると、新しい空のセッションが取得され、「ログインしていない」と見なされ、いずれにせよ再びリダイレクトされます。
于 2012-08-12T00:55:43.003 に答える
0

リダイレクトには JavaScript を使用せず、php で行います。

次に、代わりにこのロジックを実行します。

if(!($_SESSION["loggedin"]== 1))
{
    if(!(stripos($url,'register.php')))
    {
        header('Location: http://example.com/wp-login.php', true, 302);
        exit;
    }
}
于 2012-08-12T01:06:38.520 に答える