-2

ログインしているユーザーを制限して、ブラウザの検索バーに正確な URL を入力して、間接的に sign_in および sign_up ページを開くことができないようにします。制限されたページにアクセスしようとすると、404.php にリダイレクトされる必要があります。これも使ったけどダメだった

if(isset($_SESSION['user_id']) && ($obj->curPageName() == "sign_in.php")) { ?>

            <script type="text/javascript">
                location = "404.php";
            </script>           
<?php } ?>
4

1 に答える 1

2

実際には、404 はページが見つからないためのものであり、資格情報を必要とするページへのユーザーのアクセスを停止するのではなく、ページの上部でセッションを開始session_start()し、値 false でセッション変数を設定します。

$_SESSION['is_logged_in'] = false;

ユーザーがログインしたら、bool 値を true に変更します。

$_SESSION['is_logged_in'] = true;

アクセスするための資格情報が必要なページで..header()ユーザーがログインしていない場合は、条件を使用してユーザーをリダイレクトします

if(isset($_SESSION['is_logged_in']) && $_SESSION['is_logged_in'] == false) {
   header('Location: login.php');
   exit;
}

確認事項: リダイレクトに JS を使用していますが、これは非常にダーティなコーディングです。ユーザーが JavaScript を無効にすると、リダイレクトが失敗します。

追加:カスタムエラーを設定したい場合は、それをセッションに保存し、ユーザーがログインが必要なページに直接アクセスした場合にエラーをスローし、試しているページのようにエラーをスローした後にunset行うことができますvarアクセスするにはログインが必要です

于 2013-06-02T08:12:53.537 に答える