在php中验证

我有一个HTML格式的提交页面。当我提交表单数据时,它会转到一个php页面,该页面将数据插入数据库中。 我的问题是如何在不使用javascript的情况下确保html页面上的数据不为null或为空?无论如何这可以在PHP中完成?谢谢!     
已邀请:
像往常一样使用控制结构:
$non_empties = array('name', 'email', 'address');

foreach ($non_empties as $field) {
    if (! isset($_POST[$field]) || $_POST[$field] == '') {
        show_error("Please fill your $field, thank you.");
    }
}

$db->insert();
更高级的例子:
// Defined in your library
function validate_as_non_empty(Array $non_empties) {
    foreach ($non_empties as $field) {
        if (! isset($_POST[$field]) || $_POST[$field] == '') {
            throw new Exception("Please fill your $field, thank you.");
        }
    }
}

// Defined in your library
function validate_as_foo(Array $arr) { ... }

// Your request handler
try {
    validate_as_non_empty(array('name', 'address'));
    validate_as_foo(array('email'));
    $db->insert();
} catch (Exception $e) {
    show_error($e->getMessage());
}
至少有百万种方法可以进行验证。通常你有一些依赖的框架。以上示例仅用于获得灵感。     
在您的php页面的最顶部,(您在表单的action属性中链接到的页面)放置:
if (isset($_POST['submit_check']) && strlen($_POST['whatever'])) { // submit_check is a hidden form field
    insert_to_db();
    header('Location: success.php'); // redirect to another page to prevent double-submits
    exit;
}
所以你的HTML可能看起来像:
<form action="" method="post"> 
    <input type="text" name="whatever"/>
    <input type="hidden" name="submit_check" value="1"/> 
</form>
空白操作值表示发布到同一页面,但您可以根据需要发布到其他页面。     
使用PHP文件中的$ _POST super-global检索提交的数据,如下所示: 正在POST的每个HTML元素的$ _POST ['firstname']。对于eaxmple,在HTML中:
<input type="text" name="firstname" />
然后使用PHP,使用regex,isset等验证数据,并相应地重定向到成功页面或返回到HTML表单。 你也可以使用Ajax做同样的事情(同样的PHP验证将适用,只是数据传输模型略有不同)     
如果您要问的是“我可以确保数据在客户端没有javascript时有效”,那么答案就是否定。 但是,如果你想要做的就是确保在将数据插入数据库之前验证数据,那么当然。
foreach ($_POST as $key=> $value) {

  switch ($key) {
   case 'my_value_name':
      //test $value is not null and other validation;
      //insert into database function
      break;

   ...

  }

}
    

要回复问题请先登录注册