💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
![](https://box.kancloud.cn/499db9463a8836aadb3be8c340e52c9b_613x55.png)首先建立一张注册用的数据表先,我这里新建了一张wemall_name表 里面数据大概是id username,password这几个,后期不一定会用到这张表,只能用来测试用的,因为还有很多字段没有建好,一开始没有设计数据库就会有一些后期的麻烦,无可避免的。 建好表之后就是控制器代码的实现了。 ![](https://box.kancloud.cn/0d3d762bebbb14beec55c04d66e6d773_560x255.png) 前端页面代码app/index/view/register.html: ~~~ <!DOCTYPE html> <html> <head> <title>注册页面</title> <meta charset="utf-8"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-touch-fullscreen" content="yes"> <meta http-equiv="Access-Control-Allow-Origin" content="*"> <link href="__INDEX__/css/register.css" type="text/css" rel="stylesheet"> <link href="__INDEX__/css/global.css" type="text/css" rel="stylesheet"> <script type="text/javascript" src="__INDEX__/js/register.js"></script> </head> <body> <div id="layout"> <span>账号注册</span> <form method="post" action="{:url('index/login/register')}"> <ul> <p id="err_msg"></p> <li><i class="un"><img src="__INDEX__/images/user_name.png"></i><input class="username" type="text" id="username" name="username" value="{$Request.session.username}" placeholder="请输入用户名" onblur="checkusernamea()" /></li> <div id="yhm"><p id="check1" style="color: red; font-size: 15px; text-align: center;"></p></div> <li><i class="pw"><img src="__INDEX__/images/pwd.png"></i><input class="pwd" type="password" name="cpassword" id="cpassword" placeholder="请输入密码" onblur="checkpassword(this.value)"/></li> <div id="yhm1"><p id="checkPasswordResult" style="color: red; font-size: 15px; text-align: center;"></p></div> <li><i class="pw2"><img src="__INDEX__/images/pwd.png"></i><input class="pwd2" type="password" id="passwordd" name="passwordd" placeholder="请输入确认密码" onblur="checkpasswordd()" /></li> <div id="yhm2"><p id="check3" style="color: red; font-size: 15px; text-align: center;"></p></div> <div class="queren"><input class="fx" type="checkbox" checked="checked" /><p>我已阅读并同意《用户协议》</p></div> </ul> <div class="reg_btn"> <button class="submit" type="submit" onclick="return checkform(this.form);">注册</button> <a href="{:url('index/login/index')}"><div class="reg-login"><p>已有帐号,立即登陆</p></div></a> </div> </form> </div> </body> </html> ~~~ 还有一些其他链接控制器的方法: ![](https://box.kancloud.cn/712a73ae8a966b29ea19eb4bd31eade8_953x683.png) 还有一个就是我使用了ajax的异步刷新来实现用户名检测: ![](https://box.kancloud.cn/c4eba1d1fcd94892e16ef69188659f7b_932x243.png) 控制器ajax代码: ![](https://box.kancloud.cn/9ec734304a97115f3a5a0c96be68b6f5_610x243.png) ![](https://box.kancloud.cn/d1f8308800893fa71078c655bf5232bb_684x81.png) 下面到注册代码了,在这个功能上我研究了几天(当然更多的因为我去追剧了 * _ *),看了好几份代码,最后发现,手册里早已经写好了方法,虽然耗费了些时间,但是也了解了一些其他方面的东西,还是有些许收获的。也能够了解到多种解决方法。 控制器app/index/login.php代码: ~~~ <?php /** * Created by PhpStorm. * User: Administrator * Date: 2017/5/14 * Time: 22:44 */ namespace app\index\controller; use think\Controller; use think\Db; use think\Cookie; use think\Request; use think\Session; class Login extends Controller{ public function index(){ return $this->fetch('login'); } public function regi(){ return $this->fetch('register'); } public function register(){ //检查数据库名 $userinfo = Db::name('name'); //判断是否post输入 if (input('post.')){ //实例输入获取 $data=input('post.'); //验证用户信息 if (!isset($data['username']) || empty($data['username'])){ return $this->erro('请输入用户名!'); } if (!isset($data['cpassword']) || empty($data['cpassword'])){ return $this->error('请输入密码',-1); } if (!isset($data['passwordd']) || empty($data['passwordd'])){ return $this->error('请确认密码',-1); } if ($data['cpassword'] != $data['passwordd']){ return $this->error('两次密码不一致',-1); } } //接收post数据 $username = input('post.username'); $password = input('post.cpassword'); $repassword = input('post.passwordd'); //获取数据并生成数组 $value['username'] = $username; $value['password'] = $password; //插入数据 $res = $userinfo->insert($value); //插入数据 //$data=input('post.'); //$ids = $userinfo->insert($usss); //插入数据id //$ids = $userinfo->insertGetId($data); //插入数据 //$idss = $userinfo->insert($data); //$newdata['id'] = $ids; //$newdata['username'] = $idss; //$aaa = Request::instance(); //$bbb = $aaa->post("cpassword"); //$ids = $userinfo->insert($bbb); //$newdata['cpassword'] = $ids; //$dataa = $this->request->post('username'); //$datab = $this->request->post('cpassword'); //$ids = $userinfo->insert($dataa); //$ids = $userinfo->insert($datab); //$newdata['username'] = $ids; //$newdata['password'] = $idsb; //$newids = $userinfo->update($res); //进行判断 if ($res){ //$__SESSION['id'] = $ids; //记录到session中 Session::set('username'); return $this->success('注册成功',url('index/login/index')); }else{ return $this->error('注册失败'); } //记录用户登录信息 //cookie('id',$has['id'],7200); //cookie('username',$has['username'],7200); //跳转登录 } //判断用户名是否已经存在 public function check($username) { $info = db('name')->where('username','=',$username)->find(); if ($info){ echo "用户名已存在"; }else{ echo ""; } exit; } } /*//插入数据 //判断是否post输入 * if (request()->isPost()) { * //链接数据库名 $userinfo = Db::name('name'); $data = input('post.'); $res = $userinfo->insert($data); if ($res) { return $this->success('注册成功'); } else { return $this->success('注册失败'); } } */ ~~~ 在表单提交这方面花费了一些功夫,虽然最后解决了,但是我还是不能太满意,我觉得有更好的方法来解决,可惜技术不到家。 其他的注册插入数据方法我也一起截图进来吧。 这是我参考的其中一份代码: ![](https://box.kancloud.cn/c8fb13e9ecc201ee9b50bbf0ca59d8aa_663x811.png) 这个也是注册方法 ![](https://box.kancloud.cn/b4f55b4d4fec9afca5abbabe94835c5a_498x399.png) 注册跳转页面: ![](https://box.kancloud.cn/75117a61632c6f5a4bfb8b8d9a73da95_351x254.png) ![](https://box.kancloud.cn/4b82eba878016cb2cbcc011eb8d71566_379x20.png) 下面将会实现一些功能,比如用户名判断是否存在,虽然ajax实现了但是控制器还需要再验证一次,还有就是用户名长度问题,使用session记录登录用户信息功能的实现。 在app/index/login.php/sutr方法中添加判断条件(上面使用的register方法修改成了sutr,并在注册页面url里修改好方法名),通过查询数据库数据来实现验证用户名是否存在与用户名的长度。 ![](https://box.kancloud.cn/ea9fc24b7aefc739c0ada5a1351d8434_690x551.png) 使用session记录注册的用户名 在config配置里找到session开启并在类中引用use think\Session ![](https://box.kancloud.cn/9942c67d8e04c043cb38b73b09fc5068_534x266.png) 记录session,赋值给session中,第一个填写前端页面的表单名字,第二个写的是接受到表单post数据的变量名。 ![](https://box.kancloud.cn/499db9463a8836aadb3be8c340e52c9b_613x55.png) 在页面中引入value,这里的意思是引用session保存的用户名。 ![](https://box.kancloud.cn/261bffebfcc2584b7865eade3337f6f9_923x144.png) 到这里基本已经完成了注册功能的实现,下一节将会讲到我这次遇到的新函数和方法,基本上了解完这些也算是学会新增数据了。