2012-01-15 16 views
1

まず、私のコードはありません...私はプロジェクトを開始するために必要なデータを収集しています。複数のフォームが1つのPHPページとフォームの検証にアクセスする

ウェブサイトに複数の<form>があります。これらはすべて、同じPHPページにリンクされています。たとえば、電子メールを送信したり、データをDBに追加したりします。

これでフォームとPHPページを作成してメールを送信したり、データをDBに追加することができます。しかし、ここで私が知る必要があるポイントです...いずれかのフォームがPHPページを呼び出す場合、どのページがどのように動作するのかをどのように知ることができますか?

また、フォームに対して二重検証を行う方がよいでしょうか?私は、クライアント側とサーバー側の意味ですか?

私たちはバリデーションについて話しているので、クライアント側のJSやJQuery(どちらも書くことができます)であればいいですか? DBのことについて、どうすればそれを確保できますか?つまり、どのようにしてユーザがPHPコードを入力して、それをどうやって検出するのかを保証することができます。

これは一般的な質問や議論のようですが、あなたは私に多くの助けになると思います。そして、率直に言って、私は約3年前からこのウェブサイトを使用してきました。皆さんは私のgradプロジェクトに素晴らしい成績で合格するのを手伝ってくれました。:)

ありがとうございました。

答えて

1

フォーム内の非表示フィールドを使用して、実行する必要があるアクションを示すことができます。また、フォームのACTION属性にパラメータを含めることもできます。いずれの場合も同じ結果になります。

検証のために、サーバー側の検証が最初に行われ、次にクライアント側の検証が追加され、サーバーの処理が軽減され、往復時間が短縮されます。人々は反応的なフォームデザインを高く評価します。フォーム検証ツールはたくさんありますが、この質問の関連リンクを見てください。

セキュリティを確保するため、PDOまたはMysqli拡張子を使用してクエリを作成していることを確認してください。黄金のルールは、入力をエスケープし、出力をエンコードすることです。 htmlspecialchars()のようなメソッドを使用して、出力をエンコードすることができます。また、PHPのFilterメソッドを使用します。これはあなたに非常に役立ちます - http://php.net/manual/en/book.filter.php。また、検証を行う際にブラックリストではなくホワイトリストを作成する方が良いでしょう。

+0

ok JohnP、MySQLiとMySQLの違いは何ですか?私は永遠のようにMySQLを使用してきたし、プロジェクトや今後の予定でも使用しています。 – sikas

+0

これは改良されたmysqlライブラリです。 PHP5を使用している場合は、これを使用することを強くお勧めします。これはmysqlの新機能を利用するために書かれたもので、元の拡張機能に比べていくつかのセキュリティ強化が施されています - この質問には詳細があります - http://stackoverflow.com/questions/1171344/advantages-of-mysqli-over-mysql – JohnP

1

は、あなたが同じページに提出する複数のフォームを持っている場合は、フォームを識別することができます...アクションが何であるかを決定するために、各中

<input type="hidden" name="action" value="cart" /> 

OR

<input type="hidden" name="action" value="purchase" /> 
1

を隠しフィールドを持っています

<input type="hidden" name="form_name" value="001" /> 
入力検証が する必要がありますように、隠されたデータフィールドに沿って送信することにより、常にサーバー上でが発生します。クライアント側の検証はユーザーにとっては便利ですが、サーバー側で行う必要があります。

ユーザー入力を確認する前にユーザー入力を検証し、必要に応じてエスケープします。例えばmysql_real_escape_stringのようなものをクエリに入れたり、準備された文を使用したりしてください。

関連する問題