繁体   English   中英

在PHP中验证表单输入

[英]Validating form input in PHP

有没有可能写一个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。

我认为另一种描述我的问题的方法是 - 是否有一种通用的方法来迭代客户端发送的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>

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

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

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

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

我想你想问的是,如果不知道表单的变量名称就可以操作表单数据。 我这样说是因为你想要一个通用的功能,代码可以重用于任何形式。 由于这可能是当前存在的任何形式或您将来创建的表单,因此您将不知道表单中变量的名称。

此代码捕获表单的输入。 你现在要做的就是创建一个函数,它可以对$ 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>

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

看看这里答案

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM