1

是否可以使用能够执行以下场景的 php 函数 generalValidate($form) 编写一个 PHP 页面说 form.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 回答
0

当然,可以将原始表单所在的页面作为表单对话框的接收者。通过会话变量,但主要通过按钮变量的内容,您可以确定您的表单当前处于哪个状态(单击提交按钮后,您将获得一个 $_REQUEST 数组元素,其中包含按钮的名称,该元素的值按钮)。

于 2013-08-07T22:01:16.640 回答
0

看看这里的答案

这实际上是在 PHP 中接收表单数据的规范问题。有很多方法可以做到这一点。

于 2013-08-07T22:06:22.350 回答