ユーザーが特定のページにアクセスできないようにするには、ユーザーをリダイレクトする必要があります。header('Location: ../acc/login.php');
たとえば、どのくらい信頼できますか?ブラウザは 302 エラーを無視できますか? これは正しい方法ですか? 前もって感謝します!
5 に答える
それはあなたが何をしようとしているのかに大きく依存します。技術的に言えば、header()
ある程度信頼できます。多くの PHP ユーザーが問題を抱えており、動作しないためです。
出力が既にブラウザーに送信されている場合、PHP はそれが機能しないようにします。極端な例:
<protected page content here>
<?php
header('Location: login-first.php');
exit();
?>
これはまったく機能しません。最終的には、警告付きのエラー メッセージも表示されます。
ヘッダーは、設計上、他のコンテンツ (応答本文) の前に送信する必要があります。応答本文がすでに開始されている場合は、これ以上送信できず、その場合、PHP は役に立ちません。
ただし、応答本文の前にヘッダーを送信すると、その機能は機能します。また、明らかに何かを台無しにするリスクも、それほど劇的ではなくなりました。
<?php
header('Location: login-first.php');
exit();
?>
<protected page content here>
に頼ることができますが、 、またはその後にheader()
電話したことを確認してください。そうしないと、スクリプトが実行を継続するため、セキュリティ上の問題が発生する可能性があります。die()
exit()
return
ページの残りの部分を表示する前に、ヘッダー コマンドを送信してから、終了コマンド "exit()" (サーバーでの php コードの実行を停止するため) を送信します。この方法では、ユーザーが 302 リダイレクトを無視したとしても、ページ コンテンツが送信されることはありません。
はい、ユーザーは 302 リダイレクトを無視できます。
header('Location: ');
ブラウザは転送を無視できます。
これが、header() 転送の呼び出しの後に常に戻る必要がある理由です。これにより、ブラウザーが転送を受け入れない場合、コードの残りの部分は実行されません。
それは物事を行う正しい方法です。
header
100% 信頼できます。
ただしheader('Location: ../acc/login.php')
、ブラウザーで Web サイトの実際の場所に評価され、../acc/login.php は有効な URL を形成しません!