admin管理员组

文章数量:1609209

目录

    • 1. 注册&登录系统逻辑图
    • 2. 效果演示
    • 3. 代码实现
      • 1. 首页(index)
      • 2. 登陆页面(login)
      • 3. 注册页面(register)
    • 4. 零零散散的总结

1. 注册&登录系统逻辑图

2. 效果演示

(啊对,因为只是演示,所以几乎没有加任何样式和美化,css样式等整个项目完成度比较高了再考虑弄)

初次访问网站时,后端没有检查到cookie,于是自动跳转至登录页面

点击“注册账号”后跳转至注册页面


身份选择为教师时会多出验证码一项。(此处验证码暂时是固定的)

如果输入的信息有误,会根据错误信息进行对应的提示。


如果注册信息无误则会显示注册成功,并有一个返回首页的按钮

返回首页后回到登陆页面,正确输入账号密码,即显示登陆成功(否则也会进行错误提示)

再点击返回首页,由于登陆时创建了cookie,首页不再跳转至登录页面,而是根据cookie信息显示了当前的用户名和身份。

点击“注销账号”后,后端清除cookie并再次访问首页,于是又跳转到了登陆页面。

3. 代码实现

代码上主要由三个路由和对应的三个ejs模板页面实现。

很明显,index,login和register分别对应了首页、登陆页面和注册页面,路由(js)实现后端逻辑,ejs实现前端页面。

1. 首页(index)

index.js,根据有无cookie产生不同的响应,并处理“注销账号”的请求,具体看代码

var express = require('express');
var router = express.Router();

//捕获到get请求(即访问127.0.0.1:3000)
router.get('/', function(req, res, next) {
   
  let coo=req.cookies;
  //检查是否存在cookie,若没有则跳转至登陆页面
  if (coo.username==undefined)
  {
   
    res.redirect('/login');
  }
  //若有,则将cookie信息作为参数传递给index.ejs进行渲染
  else
  {
   
    //cookie中身份信息存放的是'0'和'1',转化为'学生'和'教师'
    var loginType='';
    if (coo.loginType=='0') loginType="学生";
    else loginType="教师"
    res.render('index',{
   username:coo.username,loginType:loginType});
  }
});
//捕获到post请求
router.post('/',function(req,res,next){
   
  let bod=req.body;
  //“注销账号”按钮被点击时
  if (bod.refresh=='1'){
   
    //清除所有cookie
    res.clearCookie('username');
    res.clearCookie('loginType');
    //重新跳转至首页
    res.redirect('/');
  }
})
module.exports = router;

index.ejs,username和loginType是两个参数,用来显示用户信息

<!DOCTYPE html>
<html>
  <head>
  </head>
  <body>
    <h1>首页</h1>
    <p>当前的账号为:<%= username%></p>
    <p>身份:<%= loginType%></p>
    <form method="post">
      <button type="submit" name="refresh" value="1">注销账号
    </form>
  </body>
</html>

2. 登陆页面(login)

login.js通过MySQL验证登录是否有效,若有效则创建cookie,跳转至欢迎页面

var express = require('express');
var router = express.Router();
var mysql=require('../mysql.js')

//初次访问
router

本文标签: 作业用户注册系统webmysql