網絡安全初級(前端頁面的編寫分析)

?源代碼

index.html

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>登錄頁面</title><!-- 引入外部CSS文件 --><link rel="stylesheet" href="styles.css">
</head>
<body><!-- 登錄頁面的容器 --><div class="login-container"><!-- 頁面標題 --><h2>登錄</h2><!-- 表單元素,用于用戶輸入 --><form id="loginForm"><!-- 用戶名輸入框 --><div class="input-group"><label for="username">用戶名:</label><!-- 輸入框必須填寫 --><input type="text" id="username" name="username" required></div><!-- 密碼輸入框 --><div class="input-group"><label for="password">密碼:</label><!-- 輸入框必須填寫 --><input type="password" id="password" name="password" required></div><!-- 提交按鈕 --><button type="submit">登錄</button></form><!-- 顯示驗證信息的容器 --><div id="message"></div></div><!-- 引入外部JavaScript文件 --><script src="script.js"></script>
</body>
</html>

?styles.css

/* 整體頁面樣式 */
body {font-family: Arial, sans-serif;background-color: #f4f4f9;display: flex;justify-content: center;align-items: center;height: 100vh;margin: 0;
}/* 登錄頁面容器樣式 */
.login-container {background-color: #fff;padding: 20px;border-radius: 8px;box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);width: 300px;text-align: center;
}/* 標題樣式 */
h2 {margin-bottom: 20px;
}/* 輸入框組樣式 */
.input-group {margin-bottom: 15px;text-align: left;
}/* 標簽樣式 */
label {display: block;margin-bottom: 5px;
}/* 輸入框樣式 */
input[type="text"],
input[type="password"] {width: 100%;padding: 8px;box-sizing: border-box;border: 1px solid #ccc;border-radius: 4px;
}/* 按鈕樣式 */
button {width: 100%;padding: 10px;background-color: #007bff;color: #fff;border: none;border-radius: 4px;cursor: pointer;
}/* 按鈕懸停樣式 */
button:hover {background-color: #0056b3;
}/* 驗證信息顯示樣式 */
#message {margin-top: 15px;color: red;
}

?script.js

// 為表單添加提交事件監聽器
document.getElementById('loginForm').addEventListener('submit', function(event) {event.preventDefault(); // 阻止表單默認提交行為,防止頁面刷新// 獲取用戶名和密碼輸入框的值var username = document.getElementById('username').value;var password = document.getElementById('password').value;var messageDiv = document.getElementById('message');// 簡單的驗證邏輯if (username === '' || password === '') {// 如果用戶名或密碼為空,顯示錯誤信息messageDiv.textContent = '用戶名和密碼不能為空';} else if (username === 'admin' && password === 'password') {// 如果用戶名和密碼匹配預定義值,顯示成功信息messageDiv.style.color = 'green';messageDiv.textContent = '登錄成功';// 這里可以添加登錄成功后的邏輯,比如重定向到其他頁面// window.location.href = 'dashboard.html';} else {// 如果用戶名或密碼不匹配,顯示錯誤信息messageDiv.textContent = '用戶名或密碼錯誤';}
});

效果圖

分析

1.?index.html

此為網頁的 HTML 結構,它定義了頁面的基本內容與布局。

  • 元數據與標題:借助?<meta>?標簽設定字符編碼與視口,頁面標題為 “登錄頁面”。
  • 樣式引入:通過?<link>?標簽引入外部 CSS 文件?styles.css,用于頁面樣式的美化。
  • 登錄表單:構建了一個包含用戶名和密碼輸入框的表單,二者均為必填項。表單的?id?為?loginForm,方便后續 JavaScript 操作。
  • 消息顯示區域:利用?<div id="message">?來顯示登錄驗證的結果信息。
  • 腳本引入:通過?<script>?標簽引入外部 JavaScript 文件?script.js,以實現表單提交的交互邏輯。

2.?styles.css

為頁面提供樣式,確保頁面具有良好的視覺效果。

  • 整體頁面樣式:將頁面背景顏色設為?#f4f4f9,使用?flexbox?布局讓登錄容器居中顯示。
  • 登錄容器樣式:設置登錄容器的背景顏色為白色,添加圓角和陰影效果,寬度為 300px。
  • 輸入框與按鈕樣式:為輸入框和按鈕添加了邊框、圓角和內邊距,按鈕懸停時背景顏色會發生變化。
  • 驗證信息樣式:驗證信息默認顯示為紅色。

3.?script.js

實現了表單提交的交互邏輯,包含輸入驗證和登錄結果顯示。

  • 事件監聽:為表單添加?submit?事件監聽器,阻止表單的默認提交行為,避免頁面刷新。
  • 輸入驗證:獲取用戶名和密碼輸入框的值,進行簡單的驗證。若用戶名或密碼為空,顯示錯誤信息;若用戶名和密碼匹配預定義值(admin?和?password),顯示成功信息;否則,顯示錯誤信息。
  • 登錄成功邏輯:在登錄成功時,可添加重定向到其他頁面的邏輯,如?window.location.href = 'dashboard.html';

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/915837.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/915837.shtml
英文地址,請注明出處:http://en.pswp.cn/news/915837.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

RAG項目實戰:LangChain 0.3集成 Milvus 2.5向量數據庫,構建大模型智能應用

項目背景 最近&#xff0c;有時間&#xff0c;想著動手實戰一下&#xff0c;從0到1搭建一個 RAG 系統&#xff0c;也是想通過實戰的方式來更進一步學習 RAG。因此&#xff0c;就定下了以項目實戰為主&#xff0c;書籍為輔的執行方式。&#xff08;書籍是黃佳老師著的《RAG 實戰…

docker build 和compose 學習筆記

目錄 docker build 筆記 1. 路徑解析 2. 關鍵注意事項 2. docker compose up -d 核心區別對比 常見工作流 補充說明 1. 功能區別 2. 協作關系 場景 1&#xff1a;Compose 自動調用 Build 場景 2&#xff1a;先 Build 后 Compose 3. 關鍵區別 4. 為什么需要協作&…

Java學習第六十六部分——分布式系統架構

目錄 一、前言提要 二、核心目標 三、核心組件與技術 1. 服務拆分與通信 2. 服務注冊與發現 3. 配置中心 4. 負載均衡 5. 熔斷、降級與限流 6. API 網關 7. 分布式數據管理 8. 分布式追蹤與監控 9. 容器化與編排 四、典型Java分布式技術棧組合 五、關鍵…

Pycharm的Terminal打開后默認是python環境

Pycharm的Terminal打開后默認是python環境解決方案Pycharm的Terminal打開后默認是python環境&#xff0c;無法執行pip等命令&#xff0c;也沒辦法退出 解決方案 點擊Settings -> Tools -> Terminal 可以看到當前默認打開的是torch19py38環境中的python.exe&#xff08;…

LVS——nat模式

一、搭建nat模式下LVS的實驗環境1.創建四臺虛擬機client——客戶端&#xff1a;192.168.134.111/24&#xff08;nat模式&#xff09;LVS——調度器【雙網卡】&#xff1a;192.168.134.112/24&#xff08;nat模式&#xff09;、172.25.254.111/24&#xff08;僅主機模式&#xf…

ElasticSearch是什么

ElasticSearch是什么 ElasticSearch 是一個基于 Apache Lucene 的開源分布式搜索引擎&#xff0c;用于全文搜索、日志分析、實時數據分析等場景。它以高性能、分布式架構和易用性著稱&#xff0c;支持 JSON 格式的數據存儲和查詢&#xff0c;廣泛應用于日志監控、搜索服務、企業…

linxu CentOS 配置nginx

1、準備要發布的文件夾sudo mkdir -p /var/www/myfiles # 創建文件夾&#xff08;如果不存在&#xff09; sudo chmod -R 755 /var/www/myfiles # 設置權限&#xff08;確保 Nginx 可以讀取&#xff09; sudo chown -R nginx:nginx /var/www/myfiles # 修改所有者&#xff0…

內網穿透利器:基于HTTPHTTPS隧道的代理工具深度解析

內網穿透利器&#xff1a;基于HTTP/HTTPS隧道的代理工具深度解析 一、引言 在滲透測試和內網滲透中&#xff0c;HTTP/HTTPS隧道技術是突破網絡邊界的關鍵手段。它通過將TCP流量封裝在HTTP協議中&#xff0c;穿透防火墻/NACL策略&#xff0c;實現內網橫向移動。本文以reGeorg為…

容器編排K8S

k8s概述 容器部署優勢:部署方便,不依賴底層環境,升級鏡像 本質是一個容器編排工具,golang語言開發 master master管理節點:kube-api-server請求接口,kube-scheduler調度器,kube-controller-manager控制器/管理器,etcd分布式存儲數據庫 work node服務節點:kubelet代理保…

C語言:深入理解指針(1)

1. 內存和地址在了解指針前&#xff0c;我們需要知道內存和地址是什么。1.1 內存首先來看內存。舉個例子&#xff1a;當你在酒店找房間時&#xff0c;你并不是一層一層一間一間找&#xff0c;而是通過酒店為每間房子設置的門牌號直接找到你的房間&#xff0c;這樣的效率就會快很…

完整的 SquareStudio 注冊登錄功能實現方案:已經燒錄到開發板正常使用

根據你的需求&#xff0c;我將提供完整的實現方案&#xff0c;解決按鈕同時執行多個動作的問題&#xff0c;并確保注冊登錄功能正常工作。所需文件結構需要創建和修改的文件如下&#xff1a;ui_events.h - 事件處理函數聲明events.c - 實際的事件處理邏輯ui.c - UI 初始化和事件…

OkHttp 與 Chuck 結合使用:優雅的 Android 網絡請求調試方案

前言在 Android 應用開發過程中&#xff0c;網絡請求調試是日常工作中不可或缺的一部分。Chuck 是一個輕量級的 OkHttp 攔截器&#xff0c;能夠在應用內直接顯示網絡請求和響應的詳細信息&#xff0c;無需連接電腦或使用額外工具。本文將詳細介紹如何將 OkHttp 與 Chuck 結合使…

AI學習--本地部署ollama

AI小白&#xff0c;記錄下本地部署ollama1.下載安裝ollama下載地址ollama官方地址https://ollama.com/download根據系統下載即可下面是我下載的地址 https://release-assets.githubusercontent.com/github-production-release-asset/658928958/e8384a9d-8b1e-4742-9400-7a0ce2a…

docker 設置鏡像倉庫代理

1. 創建 Docker 服務的代理配置文件sudo mkdir -p /etc/systemd/system/docker.service.d2.創建文件 /etc/systemd/system/docker.service.d/http-proxy.conf&#xff0c;內容如下&#xff1a;[Service] Environment"HTTP_PROXYhttp://192.168.0.111:7890" Environme…

ffmpeg rtsp 丟包處理

直接用 demux 在有些網絡中&#xff0c;丟包畫屏&#xff1b; 再ffmpeg和ffplay中&#xff0c;可以指定 tcp 方式&#xff0c;所以代碼直接設置陶瓷坯方式&#xff1b; // 設置RTSP選項優化接收數據流防止數據包丟失 av_dict_set(&options, "rtsp_transport", …

aosp15實現SurfaceFlinger的dump輸出帶上Layer詳細信息踩坑筆記

背景&#xff1a; 針對上一篇文章 aosp15上SurfaceFlinger的dump部分新特性-無Layer信息輸出如何解決&#xff1f; 給大家布置了一個小作業&#xff0c;那就是需要實現dumpsys SurfaceFlinger相關輸出中可以攜帶上所有的Layer的詳細信息需求&#xff0c;今天來帶大家詳細實現一…

Linux 網絡調優指南:廢棄的 tcp_tw_recycle 與安全替代方案

一、問題起源:消失的內核參數 當你在 Debian 10 系統執行 sysctl 命令時,若看到報錯: sysctl: cannot stat /proc/sys/net/ipv4/tcp_tw_recycle: 沒有那個文件或目錄 這并非配置錯誤,而是Linux 內核演進的結果。自 4.12 版本起,內核正式移除了 tcp_tw_recycle 參數——…

刪除有序數組中的重復項

class Solution {public int removeElement(int[] nums, int val) {// 暴力法int n nums.length;for (int i 0; i < n; i) {if (nums[i] val) {for (int j i 1; j < n; j) {nums[j - 1] nums[j];}i--;n--;}}return n;} }代碼邏輯解析首先獲取數組長度n&#xff0c;…

【Pytest】從配置到固件的使用指南

掌握高效測試的關鍵技巧&#xff0c;打造專業級自動化測試框架一、Pytest框架的核心優勢 Pytest作為Python最強大的測試框架之一&#xff0c;以其簡潔靈活的語法和豐富的擴展能力深受開發者喜愛。相比unittest&#xff0c;Pytest提供了更直觀的測試編寫方式和更強大的功能集&am…

[matlab]matlab上安裝xgboost安裝教程簡單版

【前言】 網上基于MATLAB的xgboost安裝教程太少了&#xff0c;以至于幾乎搜不到&#xff0c;為此做了一個簡單安裝教程【安裝前提】 有matlab軟件&#xff0c;版本越高越好&#xff0c;我用的是2023a。理論支持matlab2018a及其以上&#xff0c;因此需要自己提前安裝好matlab【安…