繁体   English   中英

注册表格在php验证

[英]Registration form Validation in php

我在这里几乎没有关于验证的问题

  1. 下面的代码效果很好但是可以使用这么多elseif吗?
  2. 我还将使用客户端验证,因此我可以在同一页面上同时具有服务器端验证和客户端验证代码。

     if( $firstname == "" ) { $er='Enter your First name'; } elseif( $lastname == "" ) { $er='Enter your Last name'; } elseif( $firstname == $lastname ) { $er='First name and last name cannot be same'; } elseif( $username == "" ) { $er='Enter your username'; } elseif( $password == "" ) { $er='Enter your password'; } elseif( strlen($password) < 6 ) { $er='Password must be more than 6 characters'; } elseif( $password != $password2 ) { $er='Password and confirm password does not match!'; } elseif( $email != "" && !preg_match( "/^([a-zA-Z0-9])+([a-zA-Z0-9\\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\\._-]+)+$/", $_POST["email"] ) ) { $er='Enter valid email'; } elseif($q->rowCount() > 0) { // $q is statement used to select username from db $er='The username '.$username.' is already taken!'; } elseif($s->rowCount() > 0) { // $s is statement used to select email from db $er='The email '.$email.' is already registered, choose another!'; } else { // some pdo statement to insert data if ($stmt->rowCount() == 1) { header("Location:userarea.php"); } else { echo "error"; } } 

1)太多的if-else语句很好地表明设计不佳。 您应该使用验证类或编写自己的验证类。 有点偏离主题,但这段代码让我想起了我们在20世纪90年代的日子:)为什么你不至少使用微框架而不是一次又一次地重新发明轮子......

2)您可以检测是否使用ajax进行呼叫:

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
  ...
}

所以在控制器中你收集数组中的验证错误,如果是AJAX请求将其转换为JSON并执行ajax验证(检查jquery验证器),如果不是简单地处理错误,就像你没有ajax一样。 我必须警告,这显然不会像纯客户端验证一样响应,但是,一遍又一遍地定义所有这些验证规则是无聊的。 这就是为什么我们现在使用框架来缓解痛苦......

尝试这个:

if (empty($_POST["fname"]))
{
    $nameErr = "Your First Name Is Missing";
}
        else
    {
        $name = $_POST['name'];

        if (!preg_match("/^[a-zA-Z a-zA-Z]*$/", $name))
        $nameErr = "Your Name Is Missing";
}


if (empty($_POST["age"]))
     {
    $ageErr = "Your Age Is Missing";
}
        else
    {
        $age = $_POST['age'];

        if (!preg_match("/^[0-9]*$/", $age))
        $nameErr = "Your Age Is Missing";
}

当您验证这么多字段时,您将需要JS或jQuery来验证而不是刷新页面,因为这会让用户感到讨厌,因为页面会不断重新加载不同的错误。 最好的选择是使用jQuery验证。

暂无
暂无

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

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