1

次のシナリオを実行できるphp関数generalValidate($form)を使用して、form.phpなどのPHPページを作成することは可能ですか?

  1. ユーザーが form.php を参照
  2. ユーザーは html フォームを取得します
  3. ユーザーがフォームに入力すると、フォームは POST メソッドで form.php に送り返されます。
  4. form.php activate generalValidate($form) ここで、フォームはユーザーが記入した受信フォームです
  5. generalValidate($form) は、このフォームが有効な場合 (たとえば、正しく入力されている場合) に true を返し、そうでない場合は false を返します。

私の質問を説明する別の方法があると思います-クライアントから送信されたHTMLフォーム(おそらくphpページ自体が最初にクライアントに送信したフォーム)を繰り返し処理しながら、それぞれに対していくつかのコードをアクティブにする一般的な方法はありますかフォーム値の?

悪い質問なら私を食べないでください、私は本当に学ぼうとしているだけです:)

あなたの便宜を図るためのコード例:

<?php
    function generalValidate($form) {
        ...
    }
    if (!isset($_SESSION)) 
            session_start();
    else if (generalValidate(...)) {

    }


?>
<html>
   <head>

   </head>
   <div>
      <p>Register</p>
   </div>
   <form id="regfrm" action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post" align="center">
      <table align="center">
         <tr>
            <td>First Name :</td>
            <td><input name="fname"  value="<?php if (isset($_POST["fname"])) {echo  v($_POST["fname"]);}?>" required></input></td>
         </tr>
         <tr>
            <td>Last Name :</td>
            <td><input name="lname" value="<?php if (isset($_POST["lname"])) {echo  v($_POST["lname"]);}?>"   required></input></td>
         </tr>
         <tr>
            <td>Email :</td>
            <td><input id="email" name="email" value="<?php if (isset($_POST["email"])) {echo  v($_POST["email"]);} else {echo "xo@xo.xo";}?>"  required></input></td>
         </tr>
         <tr>
            <td>Password :</td>
            <td><input name="pw" type="password" value="e" required></input></td>
         </tr>
         <tr>
            <td>Retype password :</td>
            <td><input name="pw" type="password" value="e" required></input></td>
         </tr>
      </table>
      <input type="submit" value="Register" ></input>
   </form>
   </body>
</html>
4

4 に答える 4

2

はい。フィールドを反復処理すると、そのフィールドを検証する方法を決定したい場合(たとえば、値が名前なのか数値なのかなど)を決定するときに、少しわかりにくくなり、より面倒になりますが、できます。このようにします:

PHPスクリプトでは、次のようなものを使用できます。

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Determines if the form was sent through the POST method

    foreach ($_POST as $fieldName => $formValue) {
        // Validate $formValue
    }
}
于 2013-08-07T22:02:22.250 に答える
1

あなたが聞きたいと思うのは、フォームの変数名を知らなくてもフォームデータを操作できるかどうかです。これは、コードを任意のフォームで再利用できる汎用関数が必要なためです。これは、現在存在する任意のフォームまたは将来作成するフォームである可能性があるため、フォーム内の変数の名前はわかりません。

このコードは、フォームの入力をキャプチャします。あとは、$name と $item の値がループされるときに、それらに対して何でも行う関数を作成するだけです。

<?php
foreach($_POST as $name => $item) {
  print "name::$name item::$item<br>";
} 
?>
<html><title>test</title>
<form method="post">
field one:  <input type="text" name="one">
<br>
field two:  <input type="text" name="two">
<input type="submit" value="go!">
</form>
</html>
于 2013-08-07T22:19:18.500 に答える