1

スクリプトが2つあります。それは:

  1. Registration.html
  2. process_registration.php

誰かがprocess_registration.phpへのリンクを直接開くことがありますが、どうすればそれを防ぐことができますか?

Process_registration.php関数は、registration.htmlからの入力から取得したデータを保存するためのものです。

何か案が ?

4

5 に答える 5

4

使用できます:

if (!isset($_POST['field'])) {
  die();
}

あなたの process_registration.php ファイルの上部にあります。

もちろん、fieldフォーム内の既存のフィールドのいずれかに置き換えます。

スクリプトを使用して複数のアカウントを登録するフラッダーに反対する場合は、登録フォームにキャプチャ フィールドを使用するか、クロールに対する保護を使用することができます。

于 2012-09-25T06:51:55.300 に答える
3

別の方法:

if (empty($_POST)) {
  exit("Direct access not allowed");
}

オブジェクト名をより柔軟に使用できます。セキュリティを強化するために、これをフォームに入れる必要があります。

<input type="hidden" value="9957374" name="hiddenvalidate" />

そしてあなたのスクリプトで:

if (!isset($_POST['hiddenvalidate']) || $_POST['hiddenvalidate'] != 9957374) {
  exit("Direct access not allowed");
}
于 2012-09-25T06:54:41.733 に答える
1

$_POST次のように、process_registration.php で配列を使用できます。

if(!isset($_POST['yourvariable'])){
//Redirect to registration page
}

PHP セッションを使用することもできます。セッションが設定されていない場合は、ユーザーを登録ページにリダイレクトします。

于 2012-09-25T06:55:11.380 に答える
1

Joomlaこの問題を処理する方法が気に入っています。

Joomla のすべての php ページで、次のコードが表示されます。

// No direct access
defined('_JEXEC') or die; // it's a config setting

トップレベルのページだけにこの変数が含まれています。他のすべてのファイルを直接開いた場合は閉じるため、偶発的な誤用やデータの損失を防ぐことができます。

于 2012-09-25T06:56:10.787 に答える
1

現在のリクエストが POST タイプかどうかを確認できます (フォームを使用している場合)。

if($_SERVER['REQUEST_METHOD'] == 'POST')

また、必要な変数がすべて設定されているかどうかを確認することもできます。

于 2012-09-25T06:52:12.407 に答える