[網頁五子棋][用戶模塊]客戶端開發(登錄功能和注冊功能)

文章目錄

  • 客戶端開發
    • 登錄功能
      • 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
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/83010.shtml
英文地址,請注明出處:http://en.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…