hongshancapital / interview-assignments

The monorepo for interview take home assignments.
315 stars 2.07k forks source link

燃果-孔卫宁-高级PHP开发 #264

Closed kongweining202 closed 3 years ago

kongweining202 commented 3 years ago

httpd配置:

<VirtualHost *:3000> ServerName localhost
ServerAlias localhost DocumentRoot "E:/wamp/www" <Directory "E:/wamp/www"> Options Indexes FollowSymLinks AllowOverride all Order Allow,Deny Allow from all

http文件:

    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>测试</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0,maximum-scale=1.0,user-scalable=no">
    <script>

    function checkNumContinuous(num)
    {
        var arr =   num.split('');
        var t   =   false;
        var continuous=0,continuousDESC=0;
        for(var i=0;i<arr.length;i++)
        {
            /*倒序连续*/
            if(arr[i]==(arr[i-1]+1))
           {
               continuousDESC++;
           }
            else
                {
                    continuousDESC=0;
                }
            /*顺序连续*/
            if(arr[i]==(arr[i+1]+1))
           {
               continuous++;
           }
            else
                {
                    continuous=0;
                }
            if(continuous>=3 || continuousDESC>=3)
           {
               t    =   true;
               break;
           }
        }
        return t;
    }
    function ajaxSubmit(dome)
    {
        var t       =   true;
        var arr     =   new Array();
        var user_name       =   dome.elements['Username'].value;
        var password        =   dome.elements['Password'].value;
        var password2       =   dome.elements['Password2'].value;
        var userRules = /^[a-zA-Z0-9_]{1,}$/; 
        if(!user_name.match(userRules)){//检查用户名命名规则是否合规范
            t=false;
            arr.push("用户名命名不规范");
        }
        //检测用户名名称必须字母或下划线开头
        var userstart = /^[0-9]{1,}$/;
        if(user_name.substr(0,1).match(userstart))
       {
           t=false;
            arr.push("用户名不可以数字开头");
       }
        if(password.length<6){
            t=false;
            arr.push("密码长度应大于6位");
        }
        /*以下是不可存在连续3位是数字的情况*/
        var psRules = /[0-9]{3,}$/;
        if(password.match(psRules)){
            t=false;
            arr.push("密码不可存在连续3位数字");
        }
        /*以下是不可连号判断*/
    //  if(checkNumContinuous(password.match(/[0-9]{3,}/)[0]))
    //   {
    //     t=false;
    //      arr.push("密码不可出现连号数字");
    //   }
        if(password !==password2){
            t=false;
            arr.push("两次密码输入不一致");
        }
        if(!t){//如果t不为真

            alert(arr.join("\n"));
        }
        return t;
    }
    </script>
    </head>
    <body>
    <form action="/api/register" method="post" onSubmit="return ajaxSubmit(this)">
      <table>
        <tr>
          <th>用户名:</th>
          <td><input type="text" name="Username" value=""/></td>
        </tr>
        <tr>
          <th>密码:</th>
          <td><input type="password" name="Password" value=""/></td>
        </tr>
        <tr>
          <th>重复密码:</th>
          <td><input type="password" name="Password2" value=""/></td>
        </tr>
        <tr>
          <th></th>
          <td><input type="submit" name="Submit " value="Submit "/></td>
        </tr>
      </table>
    </form>
    </body>
    </html>

PHP文件:

    class controller_ApiController extends controller_BaseController
    {
        function indexDo()
        {
            $this->smarty->display('ceshi/registered.html');
        }
       function registerDo()
       {
            /*php判断提交数据*/
            /*插入数据表数据**/
            /**mysql数据表 CREATE TABLE `ceshi_user_list` (
      `id` int(10) unsigned NOT NULL auto_increment,
      `user_name` varchar(80) NOT NULL,
      `password` varchar(64) NOT NULL,
      PRIMARY KEY  (`id`,`user_name`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;*/

            if($_POST['Username']=="" || $_POST['Password']=="")
            {
                echo json_encode(array("status"=>1001,"messge"=>"提交数据不可为空"));
                exit();
            }
            if(strlen($_POST['Password'])<6)
            {
                echo json_encode(array("status"=>1002,"messge"=>"密码长度不可小于6"));
                exit();
            }
            if(preg_match("/\d{3}/", $_POST['Password']))
            {
                echo json_encode(array("status"=>1002,"messge"=>"密码长度不可设置3位以上连续数组"));
                exit();
            }
            if(!preg_match("/^[a-zA-Z_]([A-Za-z0-9]+)$/i",$_POST['Username']))
            {
                echo json_encode(array("status"=>1003,"messge"=>"用户名称只能以英文字母或下划线开头,且只能包含英文字母,下划线或数字"));
                exit();
            }

            if(!preg_match("/^[a-zA-Z_]([A-Za-z0-9]+)$/i",$_POST['Username']))
            {
                echo json_encode(array("status"=>1004,"messge"=>"用户名称只能以英文字母或下划线开头,且只能包含英文字母,下划线或数字"));
                exit();
            }
            if($_POST['Password']!=$_POST['Password2'])
            {
                echo json_encode(array("status"=>1005,"messge"=>"两次密码输入不一致"));
                exit();
            }
            /**INSERT INTO `ceshi_user_list` (`user_name`, `password`) VALUES ('".$_POST['Username']."', '".$_POST['Password']."')*/
            echo json_encode(array("status"=>0,"messge"=>"注册成功","info"=>array("id"=>$userid,"user_name="=>$_POST['Username'])));
            exit();
        }

    }
galahad-z commented 3 years ago

请参照README的内容提交PR而不是Issue