0

ユーザーがテキストなどを送信できるフォームがあるとします。次に、前のページで送信された入力に基づいて結果を表示する別のページに値を渡すフォームが送信されます。これで両方の URL がわかったので、それらに直接アクセスしようとするかもしれませんが、最初のページは問題ありません。そのため、フォームに入力して最初のページから送信せずに、ユーザーがこのページに 直接アクセスできないようにしたいと考えています。

たとえば、テキスト ボックス名を含むフォームを送信すると、次のページにデータベースからその名前の詳細が表示されます。2 ページ目の URL は次のようになりますwww.domain.com/page2.php?name=somename

何か案が?

*最初のページにアクセスしようとしたときに、ユーザーがログインすることを確認済み

4

4 に答える 4

2

これを試して...

if(!isset($_GET)){
   header('Location: http://www.backtoyourotherpage.php/');
}

しかし、私はあなたのフォームでPOSTを使用して、あなたが示した方法でURLが印刷されないようにします....すべての単語が含まれています

それは...

 if(!isset($_POST)){
   header('Location: http://www.backtoyourotherpage.php/');
}
于 2013-06-09T03:21:02.963 に答える
1

この変数には、ページを呼び出す URL があります。

$_SERVER['HTTP_REFERER']

$_POST または $_GET によって渡されたデータがあるかどうかを確認できますが、最善の方法は偶然の文字列 (またはトークン) を生成し、それを $_SESSION 変数に保存してフォームで送信し、2 回比較して一致する場合は続行します。実行...

于 2013-06-09T04:56:17.953 に答える
0

2 番目のページがどのようにアクセスされているかをテストするには、次の 2 つの方法があります。

  • 最も簡単な方法は、2 番目のページで探している必要な POST パラメーターを取得しているかどうかを常に確認することです。必要なフォーム値が $_POST の適切なフィールドに存在することを確認することで、これを行うことができます
  • また、ページ リファラーをチェックして、ユーザーがページ A からアクセスしている場合にのみページ B へのアクセスを許可することもできます (ただし、ページ リファラーはクライアントによって偽装される可能性があることに注意してください)。これは、PHPページでリファラーを取得する方法を説明するSOの質問です
于 2013-06-09T03:20:03.820 に答える
0

2 番目の php ファイルの先頭で次のコードを使用します。これにより、URL が POST として要求されているかどうかがチェックされます。フォームにメソッド POST があると仮定します。これにより、ユーザーは URL 経由で直接アクセスできなくなります。

<?php 
    if(!isset($_POST)){
         header("location:someotherpage.php");
    }
?>

ただし、これは、ユーザーが他の場所から POST 要求を送信した場合には機能しません。個々のフォーム フィールドをチェックしてリダイレクトするのも良い方法です。

于 2013-06-09T03:20:38.053 に答える