[网页五子棋][用户模块]客户端开发(登录功能和注册功能)

文章目录

  • 客户端开发
    • 登录功能
      • html
      • css
        • common.css
        • login.css
      • jQuery
        • 引入 jquery
    • 运行程序
    • 注册功能

客户端开发

登录功能

html

<!DOCTYPE html>  
<html lang="en">  
<head>  <meta charset="UTF-8">  <meta name="viewport" content="width=device-width, initial-scale=1.0">  <title>登录</title>  <!-- 引入css文件 -->  <link rel="stylesheet" href="css/common.css">  <link rel="stylesheet" href="css/login.css">
</head>  
<body>  <div class="nav">  五子棋对战  </div>  <div class="login-container">  <!-- 登录界面的对话框 -->  <div class="login-dialog">  <!-- 提示信息 -->  <h3>登录</h3>  <!-- 这个表示一行 -->  <div class="row">  <span>用户名</span>  <input type="text" id="username">  </div>  <!-- 这是另一行 -->  <div class="row">  <span>密码</span>  <input type="password" id="password">  </div>  <!-- 又是一行 -->  <div class="row">  <!-- 提交按钮 -->  <button id="submit">提交</button>  </div>       </div>    </div></body>  
</html>
  • 在浏览器中打开image.png

css

现在还是比较丑的,我们再加入一些 CSS,让界面更加美观


common.css

创建 css/common.css

/* 公共的样式 */* {  /* 去掉浏览器内外边距 */    margin: 0;     padding: 0;  box-sizing: border-box;  
}  html, body {  height: 100%;  background-image: url(../image/五子棋背景.jpg);  background-repeat: no-repeat;  /* 垂直水平居中 */    background-position: center;  /* 画面铺满 */    background-size: cover;  
}  .nav {  width: 100%;  height: 50px;  background-color: rgb(51, 51, 51);  color: white;  display: flex;  align-items: center;  padding-left: 20px;  
}  .container {  height: calc(100% - 50px);  width: 100%;  display: flex;  justify-content: center;  align-items: center;  background-color: rgba(255, 255, 255, 0.7);  
}
login.css

创建 css/login.css

.login-container {  width: 100%;  height: calc(100% - 50px);  display: flex;  justify-content: center;  align-items: center;  
}  .login-dialog {  width: 400px;  height: 245px;  background-color: rgba(255, 255, 255, 0.8);  border-radius: 15px;  
}  .login-dialog h3 {  text-align: center;  padding: 25px 0 15px;  
}  /* 针对一行设置样式 */.login-dialog .row {  width: 100%;  height: 50px;  display: flex;  justify-content: center;  align-items: center;  
}  .login-dialog .row span {  display: block;  /* 设置固定值,能让文字和后面的输入框之间有间隙 */    width: 60px;  font-weight: 700;  
}  /* 输入框 */.login-dialog #username,  
.login-dialog #password {  width: 200px;  height: 33px;  font-size: 15px;  text-indent: 10px;  border-radius: 10px;  border: none;  outline: none;  
}  .login-dialog .submit-row {  margin-top: 10px;  
}  .login-dialog #submit {  width: 260px;  height: 35px;  color: white;  background-color: rgb(0, 128, 0);  border: none;  border-radius: 10px;  font-size: 20px;  margin-top: 5px;  
}  .login-dialog #submit:active {  background-color: #666;  
}

jQuery

实现登录的具体过程

  • 使用 ajax,使页面和服务器之间进行交互
  • 引入 jQuery
引入 jquery

本地引入:

  1. 在浏览器中搜索:jquery cdn
  2. 复制后缀为 min.js 的链接
  3. 在浏览器中打开链接,全选内容并复制
  4. 在项目文件中创建 static/js/jquery.min/js
  5. 将复制的内容粘贴进去
  6. 通过 script 标签引入
<script src="./js/jquery.min.js"></script>

链接引入:

  1. 在浏览器中搜索:jquery cdn
  2. 复制后缀为 min.js 的链接
  3. login.html 中添加 script 标签(在 div 的最后)
  4. 将链接粘贴进去
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script>

通过链接引入存在的一个问题

  • 当链接失效的话,就不得行了
  • 更稳妥的是将 jquery 保存到本地

我们的关键要点:

  1. 获取到页面上的几个关键元素
  2. 向服务器传递请求
<!DOCTYPE html>  
<html lang="en">  
<head>  <meta charset="UTF-8">  <meta name="viewport" content="width=device-width, initial-scale=1.0">  <title>登录</title>  <!-- 引入css文件 -->  <link rel="stylesheet" href="css/common.css">  <link rel="stylesheet" href="css/login.css">  
</head>  
<body>  <div class="nav">  五子棋对战  </div>  <div class="login-container">  <!-- 登录界面的对话框 -->  <div class="login-dialog">  <!-- 提示信息 -->  <h3>登录</h3>  <!-- 这个表示一行 -->  <div class="row">  <span>用户名</span>  <input type="text" id="username">  </div>  <!-- 这是另一行 -->  <div class="row">  <span>密码</span>  <input type="password" id="password">  </div>  <!-- 又是一行 -->  <div class="row">  <!-- 提交按钮 -->  <button id="submit">提交</button>  </div>        </div>    </div>  <script src="./js/jquery.min.js"></script>  <script>        // 1. 获取到用户名、密码和提交按钮  let usernameInput = document.querySelector('#username');  let passwordInput = document.querySelector('#password');  let submitButton = document.querySelector('#submit');  submitButton.onclick = function() {  $.ajax({  type: 'post',  url: '/login',  data: {  username: usernameInput.value,  password: passwordInput.value,  },  success: function(body) {  // 请求执行成功之后的回调函数  // 判断当前是否登录成功~  // 如果登录成功,服务器会返回当前的 User 对象.  // 如果登录失败,服务器会返回一个空的 User 对象.  if (body && body.userId > 0) {  // 登录成功  alert("登录成功!");  // 重定向跳转到”游戏大厅页面“  location.assign('/game_hall.html'); //后续进行实现  }else {  alert("登录失败!");  }  },  error: function() {  // 请求执行失败之后的回调函数  alert("登录失败!");  }  })  }  </script>  
</body>  
</html>

运行程序

  1. 运行后端程序
  2. 访问 127.0.0.1:8080/login.htmlimage.png|323
  3. 输入账号密码(数据库中有部分账号)
    • 账号:zhangsan
    • 密码:123
  4. 登录成功,网页重定向到游戏大厅页面image.png|312
    image.png|408

注册功能

<!DOCTYPE html>  
<html lang="en">  
<head>  <meta charset="UTF-8">  <meta name="viewport" content="width=device-width, initial-scale=1.0">  <title>注册</title>  <link rel="stylesheet" href="css/common.css">  <link rel="stylesheet" href="css/login.css">  
</head>  
<body>  <div class="nav">  五子棋对战  </div>  <div class="login-container">  <!-- 注册界面的对话框 -->  <div class="login-dialog">  <!-- 提示信息 -->  <h3>注册</h3>  <!-- 这个表示一行 -->  <div class="row">  <span>用户名</span>  <input type="text" id="username">  </div>  <!-- 这是另一行 -->  <div class="row">  <span>密码</span>  <input type="password" id="password">  </div>  <!-- 又是一行 -->  <div class="row">  <!-- 提交按钮 -->  <button id="submit">提交</button>  </div>        </div>    </div>  <script src="js/jquery.min.js"></script>  <script>        let usernameInput = document.querySelector("#username");  let passwordInput = document.querySelector("#password");  let submitButton = document.querySelector("#submit");  submitButton.onclick = function() {  $.ajax({  type: 'post',  url: '/register',  data: {  username: usernameInput.value,  password: passwordInput.value,  },  success: function(body) {  // 如果注册成功,就会返回一个新注册好的用户对象  if (body && body.username) {  // 注册成功  alert("注册成功!");  location.assign('/login.html');  }else {  alert("注册失败!");  }  },  error: function() {  alert("注册失败!");  }  });  }  </script>  
</body>  
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/83010.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Doris基础】Apache Doris业务场景全解析:从实时数仓到OLAP分析的完美选择

目录 1 Doris核心能力概述 2 实时数据分析场景 2.1 实时数据仓库 2.2 实时监控与告警 3 交互式OLAP分析场景 3.1 自助式BI分析 3.2 用户行为分析 4 大数据分析场景 4.1 日志分析系统 4.2 时序数据处理 5 Doris技术架构适配性分析 5.1 适合Doris的场景特征 5.2 不适合Doris的场景…

C# 类和继承(类继承和访问继承的成员)

类继承 通过继承可以定义一个新类&#xff0c;新类纳入一个已经声明的类并进行扩展。 可以使用一个已经存在的类作为新类的基础。已存在的类称为基类&#xff08;base class&#xff09;&#xff0c;新类称 为派生类&#xff08;derived class&#xff09;。派生类成员的组成如…

ElasticSearch查询指定时间内出现的次数/2秒内出现的次数

查询指定时间内出现的次数 POST process-log/_search {"size": 0,"query": {"bool": {"filter": [{"range": {"requestTime": {"from": 1722470400000,"to": 1722556800000}}}]}},"agg…

第四十五节:目标检测与跟踪-Meanshift/Camshift 算法

引言 在计算机视觉领域,目标跟踪是实时视频分析、自动驾驶、人机交互等应用的核心技术之一。Meanshift和Camshift算法作为经典的跟踪方法,以其高效性和实用性广受关注。本文将从原理推导、OpenCV实现到实际案例,全面解析这两种算法的核心思想与技术细节。 一、Meanshift算法…

Typora-macOS 风格代码块

效果&#xff1a; 替换 Typora安装目录中 themes 文件夹下的 base.user.css 文件&#xff0c;直接替换即可&#xff0c;建议先备份。 css&#xff1a; /* 语法高亮配色 */ .CodeMirror-line .cm-number { color: #b5cea8; } /* 数字 - 浅绿色 */ .CodeMirror-line .…

【高频面试题】数组中的第K个最大元素(堆、快排进阶)

文章目录 数组中的第K个最大元素题目描述示例1示例2提示&#xff1a; 解法1&#xff08;堆维护前k大元素&#xff09;解法2 手写堆维护解法3&#xff08;快速选择算法&#xff09;例题&#xff1a;P1923 【深基9.例4】求第 k 小的数参考 数组中的第K个最大元素 题目描述 给定…

『uniapp』添加桌面长按快捷操作 shortcuts(详细图文注释)

目录 手机环境适配说明安卓效果图代码 iOS(暂未实测,没有水果开发者)总结 欢迎关注 『uniapp』 专栏&#xff0c;持续更新中 欢迎关注 『uniapp』 专栏&#xff0c;持续更新中 手机环境适配说明 个别手机系统可能需要进行特别的权限设置,否则会无法使用 桌面快捷方式: 已知的有…

PHP 垃圾回收高级特性

PHP 垃圾回收高级特性 1. 循环引用与内存泄漏 单纯的引用计数在遇到循环引用时会导致内存泄漏&#xff0c;主要原因是引用计数无法正确识别那些仅通过循环引用相互关联但实际上已经不可达的对象。 1.1 引用计数的基本原理 引用计数是一种内存管理机制&#xff0c;通过维护每…

奈雪小程序任务脚本

功能概述 该脚本用于自动完成奈雪点单小程序的每日任务&#xff0c;包括&#xff1a; 自动检测 Token 有效性自动签到&#xff08;如果未签到&#xff09;获取用户基础信息&#xff08;昵称、手机号&#xff09;查询当前奈雪币余额记录连续签到天数支持多账号执行&#xff0c…

基于cornerstone3D的dicom影像浏览器 第二十七章 设置vr相机,复位视图

文章目录 前言一、VR视图设置相机位置1. 相机位置参数2. 修改mprvr.js3. 调用流程1) 修改Toolbar3D.vue2) 修改View3d.vue3) 修改DisplayerArea3D.vue 二、所有视图复位1.复位流程说明2. 调用流程1) Toolbar3D中添加"复位"按钮&#xff0c;发送reset事件2) View3d.vu…

Opencv4 c++ 自用笔记 03 滑动条、相机与视频操作

1. 相机与视频操作 1.1 打开视频&#xff0f;相机 OpenCV 中 imread() 只能读取静态图像&#xff0c;若要读取视频文件或摄像头流&#xff0c;需要使用 VideoCapture 类&#xff1a; // 构造函数 cv::VideoCapture::VideoCapture(); cv::VideoCapture…

身份证发给别人怎么加水印?赛文奥特曼身份证添加水印教程

我们经常需要使用身份证照片进行身份验证、资料提交等操作。然而&#xff0c;直接将身份证照片发送给他人或上传到网络存在一定的信息泄露风险。为了更好地保护个人隐私&#xff0c;我们可以使用 简鹿水印助手 这款工具&#xff0c;在身份证照片上添加专属水印&#xff0c;从而…

十、【核心功能篇】项目与模块管理:前端页面开发与后端 API 联调实战

【核心功能篇】项目与模块管理&#xff1a;前端页面开发与后端 API 联调实战 前言准备工作第一部分&#xff1a;完善项目管理功能 (Project)1. 创建/编辑项目的表单对话框组件 第二部分&#xff1a;模块管理功能 (集成到项目详情页)1. 创建模块相关的 API 服务 (src/api/module…

ES分词搜索

ES的使用 前言作者使用的版本作者需求 简介ES简略介绍ik分词器简介 使用es的直接简单使用es的查询 es在java中使用备注说明 前言 作者使用的版本 es: 7.17.27spring-boot-starter-data-elasticsearch: 7.14.2 作者需求 作者接到一个业务需求&#xff0c;我们系统有份数据被…

Axure设计案例——科技感立体柱状图

想让你的数据展示告别平淡无奇&#xff0c;成为吸引全场目光的焦点吗&#xff1f;快来瞧瞧这个Axure设计的科技感立体柱状图案例&#xff01;科技感设计风格借助逼真的立体效果打破传统柱状图的平面感&#xff0c;营造出一种令人眼前一亮的视觉震撼。每一个柱状体都仿佛是真实存…

恶意npm与VS Code包窃取数据及加密货币资产

60个npm包窃取系统敏感信息 安全研究人员在npm软件包注册表中发现60个恶意组件&#xff0c;这些组件能够收集主机名、IP地址、DNS服务器和用户目录信息&#xff0c;并将其发送至Discord平台控制的终端节点。据Socket安全研究员Kirill Boychenko上周发布的报告显示&#xff0c;…

leetcode 2359. 找到离给定两个节点最近的节点

给你一个 n 个节点的 有向图 &#xff0c;节点编号为 0 到 n - 1 &#xff0c;每个节点 至多 有一条出边。 有向图用大小为 n 下标从 0 开始的数组 edges 表示&#xff0c;表示节点 i 有一条有向边指向 edges[i] 。如果节点 i 没有出边&#xff0c;那么 edges[i] -1 。 同时…

1. pytorch手写数字预测

1. pytorch手写数字预测 1.背景2.准备数据集2.定义模型3.dataloader和训练4.训练模型5.测试模型6.保存模型 1.背景 因为自身的研究方向是多模态目标跟踪&#xff0c;突然对其他的视觉方向产生了兴趣&#xff0c;所以心血来潮的回到最经典的视觉任务手写数字预测上来&#xff0…

AWS WebRTC:获取ICE服务地址(part 2): ICE Agent的作用

上一篇&#xff0c;已经获取到了ICE服务地址&#xff0c;从返回结果中看&#xff0c;是两组TURN服务地址。 拿到这些地址有什么用呢&#xff1f;接下来就要说到WebRTC中ICE Agent的作用了&#xff0c;返回的服务地址会传给WebRTC最终给到ICE Agent。 ICE Agent的作用&#xf…

大数据时代的利剑:Bright Data网页抓取与自动化工具共建高效数据采集新生态

目录 一、为何要选用Bright Data网页自动化抓取——帮助我们高效高质解决以下问题&#xff01; 二、Bright Data网页抓取工具 - 网页爬虫工具实测 2.1 首先注册用户 2.2 首先点击 Proxies & Scraping &#xff0c;再点击浏览器API的开始使用 2.3 填写通道名称&#xff…