2

私は PHP を初めて使用し、2 週間しか使用していません。私は現在、「PHP と MySQL Web 開発」を読んでいますが、現在取り組んでいるサイトでのフォームの検証に関して、何をすべきか迷っています。初めて HTML5Boilerplate を使用することにしました。すべてがコード化され、うまく機能しますが、フォームの実行方法がわかりません。私のフォームでは、私が必要としているのはName emailandだけで、メソッド messageを使用しています。$_post

  • $name多くのチュートリアルでは、 、$email、および に 配列を使用することを提案し$messageましたが、これがベスト プラクティスであるかどうかを知りたいですか?
  • フォールバックとして JavaScript 検証を含める必要がありますか?
  • PHP を使用している場合、送信されたすべてのコンテンツをテキストとして扱う方法はありますか、それとも PHP のデフォルトですか?
  • 2+2の入力ボックスを必要とする単純なフォーム キャプチャを作成したいと4思っていif ($_POST['submit'] && $human == '4')ます。
  • $email = htmlspecialcharsusing is badに関するいくつかのコメントを読みましたが、誰かが理由を説明できますか?

スレッドについてお詫び申し上げますが、PHP フォーム検証に関するチュートリアルを 1 週間にわたって読みましたが、いずれも長所と短所があり、PHP を正しく使い始めたいと考えています。私は自分の BoilerPlate にEric Martin のフォームを実装しようとしましたが、動作しませんでしたし、Firefox でブラウザー エラーも発生しませんでした。

それが役立つ場合、これらは私が読んだいくつかのチュートリアルです:

  1. HTML5、CSS3、PHP を使用してお問い合わせフォームを作成する方法
  2. Ajax ベースの HTML5/CSS3 コンタクトフォームを作成する方法
  3. HTML5、CSS、PHP を統合して非常に基本的なお問い合わせフォームを作成する
  4. Kick-Ass PHP コンタクトフォームの作成方法
4

3 に答える 3

1

箇条書きの順に回答に番号を付けました...

  1. $name、$email、および $message は、サブミット $_POST 時にすでに配列内にあります。それらを別の変数に移動するのは単なる好みです (必ずしもベスト プラクティスとは限りません)。長い形式の場合、変数ごとに $_POST と入力するのは面倒です。

  2. Javascript の検証は便利であり、フォールバックではありません。PHP がフォールバックになります。JS は必要ありませんが、役に立ちます。JS は簡単にバイパスできるため、常に PHP で検証する必要がありますが、JS は優れています。エラーのあるフォームを送信し、それを見つけるためだけにページ全体が読み込まれるのを待たなければならない場合、フォームを再度入力して修正することはないかもしれません。JS では、エラーが発生した場合にすぐに戻ることができるように、ブラー (カーソルがフィールドから離れたとき) に各フィールドを検証することをお勧めします。

  3. PHP は厳密に型指定されていないため、'2' == 2 == 2.0. PHP は、ほとんどすべての型を暗黙的に変換しようとします。

  4. 画像を作成し、それを彼らに見せて、予想される反応を知り、他のフィールドと同じように比較します。画像を動的に処理したい場合は、2 つの乱数を生成し、結果をセッションに保存し、gd を使用して数式で画像を描画し、ポストで比較します。

  5. htmlspecialchars が変換できる有効な文字は多数あります。翻訳後、元に戻すことができますが、元に戻さないと、電子メールは無効になり、意図した宛先に到達しません。

于 2013-04-15T19:43:50.467 に答える
0

これですべてが解決するわけではないことは承知していますが、参考になれば幸いです。

多くのチュートリアルでは、$name、$email、および $message に配列を使用することを提案していますが、これがベスト プラクティスであるかどうか知りたいですか?

これについて何を言いたいのかわからないので、詳しく教えてください。

フォールバックとして JavaScript 検証を含める必要がありますか?

それは間違いなく良い考えです。それは褒め言葉ほどフォールバックではありません。本当に重要なことは、PHP が検証を処理するため、MySQL インジェクション (またはその他の悪いこと) が発生しないことです。JS 検証は簡単にバイパスできるため、信頼することはできません。JS 検証は、フィールドが必須であるか、適切な形式ではないことを示すためのユーザーフレンドリーな方法です。

PHP を使用している場合、送信されたすべてのコンテンツをテキストとして扱う方法はありますか、それとも PHP のデフォルトですか?

PHP には、変数に関する組み込み型がありません。foods[]そうは言っても、キャストと関数を使用して、変数が数値などであることを確認できます。フォームでは、同じ名前の値を持つ複数のチェックボックスがある場合$_POST['foods']、配列になります。他のほとんどのフィールドはテキストとして送信されます。

入力ボックス 4 を必要とする 2+2 の単純なフォーム キャプチャを作成したいと考えています。 if ($_POST['submit'] && $human == '4' )?

PHP用の優れたCaptchaライブラリをグーグルで検索します。デモは通常、非常に詳細で実装が簡単です。

$email = htmlspecialchars is bad の使用に関するいくつかのコメントを読みましたが、誰かが理由を説明できますか?

正規表現を使用して電子メールを検証することを検討します。一部の関数もこれを実行できます。参照: PHP で電子メールを検証する方法?

于 2013-04-15T19:54:03.777 に答える