2

ユーザーが特定のページにアクセスできないようにするには、ユーザーをリダイレクトする必要があります。header('Location: ../acc/login.php');たとえば、どのくらい信頼できますか?ブラウザは 302 エラーを無視できますか? これは正しい方法ですか? 前もって感謝します!

4

5 に答える 5

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>
于 2012-09-22T18:07:21.413 に答える
4

に頼ることができますが、 、またはその後にheader()電話したことを確認してください。そうしないと、スクリプトが実行を継続するため、セキュリティ上の問題が発生する可能性があります。die()exit()return

于 2012-09-22T17:59:36.560 に答える
0

ページの残りの部分を表示する前に、ヘッダー コマンドを送信してから、終了コマンド "exit()" (サーバーでの php コードの実行を停止するため) を送信します。この方法では、ユーザーが 302 リダイレクトを無視したとしても、ページ コンテンツが送信されることはありません。

はい、ユーザーは 302 リダイレクトを無視できます。

http://www.webmasterworld.com/html/3604591.htm

于 2012-09-22T18:01:39.793 に答える
0

header('Location: ');ブラウザは転送を無視できます。

これが、header() 転送の呼び出しの後に常に戻る必要がある理由です。これにより、ブラウザーが転送を受け入れない場合、コードの残りの部分は実行されません。

それは物事を行う正しい方法です。

于 2012-09-22T17:59:45.653 に答える
-1

header100% 信頼できます。

ただしheader('Location: ../acc/login.php')、ブラウザーで Web サイトの実際の場所に評価され、../acc/login.php は有効な URL を形成しません!

于 2012-09-22T18:02:46.513 に答える