开发者社区> 问答> 正文

初学PHP,注册验证时方法写的太长,求大神给点优化意见。。:报错

public function confirm() {
 56        $email = $_POST['email'];
 57        $pwd = $_POST['pwd'];
 58        $repwd = $_POST['repwd'];
 59        $nickname = $_POST['nickname'];
 60        $sex = $_POST['sex'];
 61        $blood = $_POST['blood'];
 62        $year = $_POST['year'];
 63        $month = $_POST['month'];
 64        $day = $_POST['day'];
 65        $error = array();
 66 //验证E-MAIL地址
 67     if($email == ''){
 68       $error['checkemail'] = 'email不能为空!';
 69     } else if(!ereg("^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$",$email)){
 70       $error['checkemail'] = 'E-mail地址格式错误!';
 71       }
 72 //验证密码
 73     if($pwd == ''){
 74       $error['checkpwd'] = '密码不能为空';
 75     }else if (!preg_match("/^(?=.*[a-zA-Z])(?=.*\d).{6,9}$/",$pwd)){
 76       $error['checkpwd'] = '密码最短为六位且至少包含一个英文字母。';
 77     }else if ($pwd !== $repwd){
 78       $error['checkpwd'] = '两次输入密码不同';
 79     }
 80 //其他验证
 81    if($repwd == ''){
 82      $error['recheck'] = '请再输入一遍密码';
 83    }
 84    if($sex == ''){
 85      $error['checksex'] = '请选择';
 86    }
 87    if(checkdate($day,$month,$year) == 0){
 88       $error['checkdate'] = '日期不存在。';
 89    }
 90    if($blood == ''){
 91      $error['checkblood'] = '请选择';
 92    }
 93    if($nickname == '') {
 94      $error['checknickname'] = '请输入昵称。';
 95    }
 96     if(!empty($error)){
 97       $this->smarty->assign($error);
 98       $this->smarty->assign($_POST);
 99       $this->smarty->display('entry.tpl');
100     }else{
101       $this->smarty->assign($_POST);

102     $this->smarty->display('entry_confirm.tpl');
103      }

分开写的话,每次都要赋值很麻烦,对OOP的使用和理解不是很好,请求大神们给点意见。

展开
收起
kun坤 2020-06-06 11:38:13 473 0
1 条回答
写回答
取消 提交回答
  • 代码没有冗余的,只是把接收数据和验证的过程放一个函数里做就行了。

    ######

    新手不要在细节上纠结,否则很容易搞的自己失去信心,爱怎么干就怎么干,只要完成功能就行,又不是绣花,纠结什么,工作几年后再说,

    ######同意######

    楼上说得很对,非要简化的话可以从验证环节入手,比如,给每一个标签加上验证消息、验证模式等属性,如:

    <input type="text" v-msg="请输入用户名" v-regex="^[a-z]{0,9}$"/>



    这样你就不用分别去判断每个文本框了,提交表单的时候判断每个input的值是否和他的v-regex匹配就可以了。

    ######前端改v-regex怎么办 ?######一般使用的是模型绑定,字段限定
    2020-06-06 11:38:21
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载