资讯专栏INFORMATION COLUMN

小白的边学边写,一个基于laravel的APP接口【API】(三)

econi / 2459人阅读

摘要:但是,作为一名合格的,我们也应该具备一些前端知识。但是,我们还需要验证手机号是否是唯一的,如果不唯一则应告知给客户端。

前言

前两篇文章我们已经把基本的注册功能给完成了。但是,作为一名合格的PHPer,我们也应该具备一些前端知识。HTML+css已经是最基本的技能了,那么接下来,就来点题外内容,让我们去研究一下JavaScript吧。
首先先说明用js要做什么事情,对,就是完善注册页面的验证功能。我们的注册信息有(用户名)(手机号)(密码),在一般网站或APP的注册机制中,都会有让用户再输入一遍密码,以确保录入正确的密码防止因为乱输错输导致的不便,因此还应当有(重复密码)。

开始操作

开始之前先说说我的js资源吧,我用到了jQuery.jsValidator.js来开发这个功能。前者不必多说,后者是什么呢?Validator.js来自于大神的手笔,具体请看 Validator.js。
于是照着文档和自己的理解,写出了这么一段代码(别忘记引入相关的js文件)

</>复制代码

  1. // 表单验证
  2. var validator = new Validator("register",[
  3. {
  4. name: "name",
  5. display:"请填写用户名{{name}}|用户名太短|用户名太长",
  6. rules: "required|min_length(6)|max_length(20)"
  7. },
  8. {
  9. name: "phone",
  10. display:"你输入的{{phone}}不是合法手机号码",
  11. rules: "is_phone"
  12. },
  13. {
  14. name: "password",
  15. display:"请输入密码|密码长度应超过6位|密码长度应少于20位",
  16. rules: "required|min_length(6)|max_length(20)"
  17. },
  18. {
  19. name: "password_confirmation",
  20. display:"请再输入一遍密码",
  21. rules: "required"
  22. }
  23. ],function(obj,evt){
  24. var checkPassword = $("#icon_password").val();
  25. var checkConfirmPassword = $("#icon_password_confirmation").val();
  26. if (checkPassword != checkConfirmPassword) {
  27. var message = {
  28. id: null,display: null,element: null,name: null,
  29. message: "两次输入的密码不一致",messages: null,rule: null
  30. };
  31. obj.errors.push(message);
  32. }
  33. if(obj.errors.length>0){
  34. for (var i = 0; i < obj.errors.length; i++) {
  35. writeError(obj.errors[i].message);
  36. }
  37. // 自动清除内容
  38. setTimeout(function(){
  39. $("#error_msg").empty();
  40. }, 5000);
  41. // console.log(validator);
  42. }else{
  43. submitForm();
  44. }
  45. });
  46. function writeError(errorMessage){
  47. var errorHtml = "
    "+errorMessage+"close
    ";
  48. $("#error_msg").append(errorHtml);
  49. }

它都做了哪些事,首先所有内容不能为空,然后验证了是否为空和长度够不够还有两次输入密码是否一致,最后把错误信息用jQueryappend()函数插入到页面上,并且规定了5秒后自动清除。之后的submitForm()才开始提交表单。

</>复制代码

  1. // 提交表单
  2. function submitForm() {
  3. var $registerForm = $("#register");
  4. $.ajax({
  5. type: "post",
  6. url: "http://localhost/register",
  7. data: $registerForm.serialize(),
  8. async: false,
  9. dataType:"json",
  10. success: function(data){
  11. alert(JSON.stringify(data));
  12. }
  13. });
  14. }

OK,完成表单的验证和上传了,接下来我又想,是不是应该写一个点击查看密码的功能呢?
于是乎,就有了下面的东西。

</>复制代码

  1. visibility
  2. visibility
  3. // 显示隐藏密码
  4. $("#see-pw1").click(function(){
  5. if ($("#icon_password").val() != "") {
  6. if ($("#icon_password").hasClass("see")) {
  7. $("#icon_password").removeClass("see");
  8. $("#icon_password").attr("type", "password");
  9. $("#see-pw1").text("visibility");
  10. }else{
  11. $("#icon_password").addClass("see");
  12. $("#icon_password").attr("type", "text");
  13. $("#see-pw1").text("visibility_off");
  14. }
  15. }
  16. });
  17. $("#see-pw2").click(function(){
  18. if ($("#icon_password_confirmation").val() != "") {
  19. if ($("#icon_password_confirmation").hasClass("see")) {
  20. $("#icon_password_confirmation").removeClass("see");
  21. $("#icon_password_confirmation").attr("type", "password");
  22. $("#see-pw2").text("visibility");
  23. }else{
  24. $("#icon_password_confirmation").addClass("see");
  25. $("#icon_password_confirmation").attr("type", "text");
  26. $("#see-pw2").text("visibility_off");
  27. }
  28. }
  29. });

附上效果图


后端分析

虽然说我们已经在前端完善了验证规则,但是,如果一旦被别人得到了我们的API,那么就能胡乱的输入数据了,真是一场灾难。
所以对于APP来说,如何防止注册的时候无法验证注册方的真实环境呢?就是说注册者到底是不是用APP客户端来注册信息的。这里我又要提一点自己的个人见解了。在APP安装完成之后我们应该及时告知服务器有一款APP被安装了,并且在客户端生成一段特殊标识传回服务器,服务器将有特殊验证规则的标识储存起来,等注册时由APP返回给服务器,OK,是对的注册环境,再开始注册。
但是我只是想想O(∩_∩)O~,实际做起来我还是有千万个不想。但是,我们还需要验证手机号是否是唯一的,如果不唯一则应告知给客户端。
首先我们应该修改AuthenticateController.php文件的内容

</>复制代码

  1. //引入类
  2. use Validator;
  3. //在register方法内添加验证规则的代码
  4. $validator = Validator::make($request->all(), [
  5. "phone" => "unique:users"
  6. ]);
  7. if ($validator->fails())
  8. {
  9. return response()->json("该用户已存在");
  10. }

去测试

到这时功能就很完备了。

后续

接下来我们将用得到的token值来获取服务器上数据库的内容。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/35771.html

相关文章

  • 小白边写一个基于laravelAPP接口API】(二)

    摘要:当注册成功以后,我们应该立即返回确认用户登录的值,并且作为的变量给储存起来,直到退出时删除,或者超出时间后删除。在文档里也有提及,对,就是那个叫的东东。用户信息也被正常写入,之后就可以欢快的扩展注册机制啦。 前言 根据上一篇文章,我们已经吧dingo/api给安装并且调试好了,那么下一步,就是来完善咱们的API了。最首要的步骤一定是要先把注册的功能给完善了,好了,那就给第一条正式API...

    skinner 评论0 收藏0
  • 小白边写一个基于laravelAPP接口API】(二)

    摘要:当注册成功以后,我们应该立即返回确认用户登录的值,并且作为的变量给储存起来,直到退出时删除,或者超出时间后删除。在文档里也有提及,对,就是那个叫的东东。用户信息也被正常写入,之后就可以欢快的扩展注册机制啦。 前言 根据上一篇文章,我们已经吧dingo/api给安装并且调试好了,那么下一步,就是来完善咱们的API了。最首要的步骤一定是要先把注册的功能给完善了,好了,那就给第一条正式API...

    jlanglang 评论0 收藏0
  • 小白边写一个基于laravelAPP接口API】(

    摘要:但是,作为一名合格的,我们也应该具备一些前端知识。但是,我们还需要验证手机号是否是唯一的,如果不唯一则应告知给客户端。 前言 前两篇文章我们已经把基本的注册功能给完成了。但是,作为一名合格的PHPer,我们也应该具备一些前端知识。HTML+css已经是最基本的技能了,那么接下来,就来点题外内容,让我们去研究一下JavaScript吧。首先先说明用js要做什么事情,对,就是完善注册页面的...

    piglei 评论0 收藏0
  • 小白边写一个基于laravelAPP接口API】(

    摘要:但是,作为一名合格的,我们也应该具备一些前端知识。但是,我们还需要验证手机号是否是唯一的,如果不唯一则应告知给客户端。 前言 前两篇文章我们已经把基本的注册功能给完成了。但是,作为一名合格的PHPer,我们也应该具备一些前端知识。HTML+css已经是最基本的技能了,那么接下来,就来点题外内容,让我们去研究一下JavaScript吧。首先先说明用js要做什么事情,对,就是完善注册页面的...

    TerryCai 评论0 收藏0

发表评论

0条评论

econi

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<