zoukankan      html  css  js  c++  java
  • go+js登录注册例子(带邮箱验证)

    1 搭建服务器

     1 package index
     2 
     3 import (
     4     "log"
     5     "net/http"
     6 
     7     "2021.6.28_WebServer_email.go/lib/utils"
     8 )
     9 
    10 const (
    11     path     = "json/users.json"
    12     UserName = "UserName" //Cookie{Name: UserName, Value: email}
    13 )
    14 
    15 var (
    16     uti   = utils.NewUtils()                //实用包
    17     codes = make(map[string]string, 900000) //验证码集合 "email": "code", ...
    18     users = make(map[string]string, 900000) //在线用户集合 "email": "1", ...
    19 )
    20 
    21 //运行服务器
    22 func RunServer() {
    23 
    24     // 启用静态文本服务
    25     http.Handle(
    26         "/view/",
    27         http.StripPrefix(
    28             "/view/",
    29             http.FileServer(http.Dir("view")),
    30         ),
    31     )
    32 
    33     // 设置路由,js的ajax请求地址与HandleFunc第一个参数对应(url)
    34     http.HandleFunc("/", show)                     //显示主页
    35     http.HandleFunc("/register", register)         //注册
    36     http.HandleFunc("/requestEmail", requestEmail) //请求邮件验证码
    37     http.HandleFunc("/login", login)               //登录
    38     http.HandleFunc("/isLogin", isLogin)           //检测用户是否已经登录
    39     http.HandleFunc("/exit", exit)                 //退出登录
    40 
    41     // 启动web服务,监听9090端口(如果没有遇到错误会一直运行下去)
    42     //浏览器访问 http://localhost:9090
    43     err := http.ListenAndServe(":9090", nil)
    44     if err != nil {
    45         log.Fatal("ListenAndServe: ", err)
    46     }
    47 
    48 }

    1.1 当前对 http.HandleFunc("/", show) 的理解

       第一个参数是相对于main.go的相对路径, 例如 http.HandleFunc("/login", login), 在浏览器输入地址 http://localhost:9090/login 就会执行login函数,

      所以第二个函数应该填当路径为http://localhost:9090/login时要执行的函数名

    1.5 http.HandleFunc("/", show)与ajax的用法

      

     1 "use strict"
     2 
     3 import {TUI} from './lib/Utils.js';//视图包
     4 import {Ajax} from './lib/Ajax.js';//ajax包
     5 import {index} from './index.js';
     6 
     7 const ajax = new Ajax();
     8 
     9 //ui视图的数据
    10 const data = [
    11     {
    12         title: "qq邮箱",
    13         valueUrl: ".email",
    14     },
    15     {
    16         title: "密码",
    17         ps: "必须6-16位字符",
    18         valueUrl: ".password",
    19     },
    20     {
    21         valueUrl: ".send",
    22         buttonValue: "send"
    23     }
    24 ];
    25 
    26 var o = {
    27     type: "请填写表单",
    28     email: "",
    29     password: "",
    30     send: (e, o)=>{
    31         ajax.run({
    32             url: "/login",
    33             data: "email=" + o.email + "&password=" + o.password,
    34             success: (d)=>{
    35                 if(d === "1") index.getUser();
    36                 else alert("登录失败")
    37             }
    38         });
    39     }
    40 }
    41 
    42 //实例化ui
    43 var ui = new TUI(o, data).setTitle("登 录");
    44 
    45 var login = {ui: ui}
    46 
    47 export {login}
    login.js

      ajax的url值应该与第一个参数相对应

    2 显示主页

     1 package index
     2 
     3 import (
     4     "fmt"
     5     "html/template"
     6     "net/http"
     7 )
     8 
     9 //显示主页
    10 // w表示response对象,回复客户端信息
    11 // r表示客户端请求对象,包含了请求头,请求参数等等
    12 func show(w http.ResponseWriter, r *http.Request) {
    13 
    14     // 回复请求后是否关闭连接
    15     r.Close = true
    16 
    17     //获得一个与template关联的模板
    18     t, err := template.ParseFiles("view/index.html")
    19     if err != nil {
    20         fmt.Fprintf(w, "parse template error: %s", err.Error())
    21         return
    22     }
    23 
    24     //应用到第二个参数上,并写入w输出
    25     t.Execute(w, nil)
    26 
    27 }






    2.5
    进入http://localhost:9090主页时首先会执行show函数
    路由器http.HandleFunc("/", show)会给show传递2个实参: w, r


    服务器语言: golang
    
    前端语言: html5(推荐使用谷歌浏览器)
    
    通信: ajax & json
    
    项目: 登录注册系统
    
    模拟运行: 运行.exe文件,然后打开谷歌浏览器输入地址: http://localhost:9090
    
    ps: 注册完成的用户保存到了json文件里面
    
    ps: 实现了发送smtp邮箱验证注册邮箱是否可用
    
    ps: 实现了json与go之间的互相转换
    
    ps: 实现了操作json文件
    
    作者qq: 3247940050
    
    时间: 2021.6.28
    /*---------------------------三八线-------------------------------------*/
    
    目录介绍:
    
    index: 实现服务器和路由的地方
    
    json: 存放用户信息的json文件
    
    lib: 一些实用包
    
    view: html, css, js 文件(前端视图代码)


    源码地址: https://pan.baidu.com/s/1TV1j5BeZ7ZhidCq7aQXePA
    
    
    提取码:   0000

    压缩包名: 2021.6.28_WebServer_email.go

















    ...
  • 相关阅读:
    【数学】多项式取 ln
    【数学】多项式求逆
    【模拟 + 栈】AcWing 151. 表达式计算4
    Unity3D开发入门教程(一)——搭建开发环境
    Unity3D开发入门教程(三)——添加启动脚本
    Unity3D开发入门教程(二)—— Lua入门
    Unity3D开发入门教程(四)——用Lua实现组件
    哈希表
    邻接表
    并查集
  • 原文地址:https://www.cnblogs.com/weihexinCode/p/14942884.html
Copyright © 2011-2022 走看看