在PHP中验证表单输入

时间:2013-08-07 21:51:13

标签: php html forms dom

是否可以编写一个PHP页面,例如form.php,其中包含能够执行以下场景的php函数generalValidate($ form):

  1. 用户浏览到form.php
  2. 用户获取html表单
  3. 用户填写表单,表格通过POST方法发送回form.php
  4. form.php激活generalValidate($ form),其中form是用户填写的刚收到的表单
  5. generalValidate($ form)如果此表单有效(例如正确填充),则返回true,否则返回false。
  6. 我认为另一种描述我的问题的方法是 - 是否有一种通用方法来迭代客户端发送的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 个答案:

答案 0 :(得分:2)

是。虽然迭代字段会使您的清晰度降低一些,并且当您想要确定如何验证所述字段时,会使其更加混乱(例如,要知道该值是名称还是数字或者其他),但你可以这样做:

PHP脚本中,您可以使用以下内容:

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

    foreach ($_POST as $fieldName => $formValue) {
        // Validate $formValue
    }
}

答案 1 :(得分: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>

答案 2 :(得分:0)

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

答案 3 :(得分:0)

查看answer here

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