1

変更後にテキスト ボックス内のテキストを確認し、何が問題なのかを報告できるようにしたいと考えています。登録フォーム用です。

これは register.php の一部です。

<form action"" method="post">
<ul class="ul-reg">
<li>
<p>Username: </p><input name="username-field" type="text" onblur="someFunction()" /><span id="UsernamehelpText">      </span>
</li>
</ul>
</form>

次に、長さ、文字、おそらく正規表現などをチェックするためのすべての関数を格納する registerfunctions.php を用意します。どの関数を呼び出すかはそれほど重要ではありません。呼び方がわからないだけです。

私が見たフォームは、エラーを投稿する場所ですが、他のオプションが開いている場合は、テキストボックスと同じ行にエラーテキストを投稿できるようにするだけです

私は JavaScript と AJAX をチェックしましたが、これについてはかなり初心者であり、その仕組みがよくわかりません。

4

2 に答える 2

2

コメントで話し合った後、私はあなたが何を望んでいるかを理解しています。

まず、説明。検証が行われる場所は2つあります。フロントエンド(Webページ)とバックエンド(投稿された値を保存するPHPスクリプト)です。本当に保存したくないもの(たとえば、エスケープされていないSQL文字列、長すぎるフィールドなど)は、 Javascriptの検証を回避するの簡単なので、PHPで検証する必要があります。たとえば、誰かがあなたのWebページにアクセスすることさえせずに、不正な値を含むPOSTをサーバーに送信することを妨げるものは何もありません。

バックエンドで検証を実行する必要がある場合でも、フロントエンドで同じ検証を実行するのはユーザーフレンドリーであるため、ユーザーはエラーが表示されるまで待つ必要はありません。これにより、サーバーへのトラフィックも減少します。大規模なプロジェクトでおそらくやりたいことは、検証ルールを一元的に記述し、それらのルールを使用してPHPとJavascriptの両方の検証を動的に生成するための何らかのシステムを用意することです。これを行うことの利点は、ビジネスルールを2つの場所で複製しないことですが、小規模なプロジェクトでは、面倒なことをする価値はないでしょう。

フロントエンドでの検証は次のようになります。イベントハンドラーを適切な1つまたは複数のイベントにバインドし(たとえば、onkeydown = "validateUserName()"を追加して、検証が少し速く反応するようにすることができます)、警告テキストを適切に更新します。

<form action="" method="post">
  <ul class="ul-reg">
    <li>
      <p>Username: </p>
      <input id="username" name="username-field" type="text" onblur="validateUserName()" />
      <span id="UsernamehelpText"></span>
    </li>
  </ul>
</form>

<script type="text/javascript">
  function validateUserName() {
    var userNameElement = document.getElementById('username');

    //Do your work: Get the value of the user name field, check
    // the values against your validation rules...

    var helpText = document.getElementById('UsernamehelpText');
    if(isValid)
      helpText.innerHTML = "";
    else
      helpText.innerHTML = "Invalid!";
  }
</script>

バックエンドでは、フォームを処理するときに、PHPで同じルールをチェックして、不正な値が悪意を持って投稿されたり、Javascriptのエラーが原因で投稿されたりしないようにする必要があります。エラーが見つかった場合は保存せず、代わりに、入力フィールドに送信された値と何が無効であったかを示すメッセージを使用してフォームを再レンダリングできます。これにより、ユーザーは値を失うことなく入力を変更できます。提出されました。

于 2012-12-06T16:31:32.847 に答える
1

jQueryを使用すると、次のようになります。

function someFunction() {
  $.ajax({
    url: "checkStuff.php",
    data: $("input[name='username-field']").serialize,
    success: function(data) {
      if (data == "correct") {
        $("#UsernamehelpText").html("Valid");
      } else {
        $("#UsernamehelpText").html("Invalid");
      }
    }
  });
}

PHP は、入力の有効性をチェックし、有効な場合は「正しい」とエコーするだけの非常に単純なものである可能性があります。

于 2012-12-06T12:13:05.403 に答える