登录页面的代码

article/2025/10/3 1:47:37

登录页面的代码

在把页面和数据库做好之后,我的登录页面只需要 用户名和密码 ,所以代码比较简单。
先找到登录按钮,给一个点击事件,然后再获取他们的表单值,然后对用户名和密码进行判断,判断是否填写了资料和是否是正确的账户和密码,在这之前还要检查登录页面是否是属于外层页面。dataValidationForm 是from表单的ID,用户名和密码必须要加上value

<input type="text" name="UserNuber" id="UserNuber" class="form-control" placeholder="用户名" value="@ViewBag.UserNuber" style="width:93%;" /><input type="Password" name="Password" id="Password" class="form-control" placeholder="密码" value="@ViewBag.Password" style="width:93%;" />
<script>var layer;$(function () {//键盘按下事件window.onkeydown = onreturn;//用于检查登录页面是否是外层页面if (window.top.location.href != window.location.href) {window.top.location.href = window.location.href;}//加载&初始化layui模块,弹出层模块layui.use(['layer'], function (args) {layer = layui.layer;});$("#btnSubmit").click(function () {//获取值var UserNuber = $('#dataValidationForm [name="UserNuber"]').val();//用户名var Password = $('#dataValidationForm [name="Password"]').val();//密码
var rememberMe = $('#dataValidationForm[name="rememberMe"]:checked').val();//是否记住密码//判断是否填写数据 判断用户名和密码if (strValIsNotNull(UserNuber) && strValIsNotNull(Password)) {var layerIndex = layer.load();//打开加载层$.post("/WCommerce/UserLogin",//路径:控制器名称+控制器中的方法名称{UserNuber: UserNuber,//用户名Password: Password,//密码rememberMe: rememberMe,//是否记住密码}, function (msg) {layer.close(layerIndex);//加载层if (msg == "success") {//alert("登录成功");//跳转到主页面window.location.replace("/WCommerce/Main");//跳转路径:控制器名称+主页面} else {if (msg == "PasswordErro") {layer.alert('请输入正确的账号或密码');}else if (msg == "userNoExsit") {layer.alert('用户不存在');}else {layer.alert('登录失败');}//清空密码$("#Password").val("");}});} else {alert("请填写完整数据");}});//字符串值不为空function strValIsNotNull(strVal) {return strVal != undefined && strVal != null && strVal != '';}</script>

然后在后台里获取cookie,

public ActionResult Login()
{string UserNuber = "";string Password = "";    bool isRember = false;//获取cookieHttpCookie cookie = System.Web.HttpContext.Current.Request.Cookies["user"];if (cookie != null){if (cookie["UserNuber"] != null){UserNuber = System.Web.HttpContext.Current.Server.UrlDecode(cookie["UserNuber"]);}if (cookie["Password"] != null){Password = System.Web.HttpContext.Current.Server.UrlDecode(cookie["Password"]);}isRember = true;}ViewBag.UserNuber = UserNuber;ViewBag.Password = Password;ViewBag.isRember = isRember;return View();}

接下来就是最关键的后台代码了,获取页面传递的变量,然后用linq的查询方法,根据账号查询出一条用户数据…

 public ActionResult UserLogin(PW_User pwUser)
{string strMsg = "fail";//定义一个记录状态的变量//获取页面传递的变量string strUserNuber = pwUser.UserNuber;   //用户名string strPassword = pwUser.Password;     //密码string strIsRember = Request["rememberMe"];    //记住否        //验证码正确try{//根据账号查询出一条用户数据//linqPW_User dbUser = (from tbUser in myModels.PW_Userwhere tbUser.UserNuber == strUserNuber && tbUser.ToVoidNo == trueselect tbUser).Single();//结果只能有一条数据,0条或者大于等于2条都会出现异常(一般单表查询时用)//对用户输入的密码加密string password = Common.AESEncryptHelper.Encrypt(strPassword);//用加密后的密码和数据库查询到的密码比较if (password == dbUser.Password){//=验证选择的角色是否正确var listUserType = (from tbUser in myModels.PW_Userjoin tbUserRoleDetail in myModels.PW_UserRoleDetail on tbUser.UserID equals tbUserRoleDetail.UserIDjoin tbUserType in myModels.SYS_UserType on tbUserRoleDetail.UserTypeID equals tbUserType.UserTypeIDwhere tbUser.UserID == dbUser.UserIDselect new{tbUserType.UserTypeID,tbUserType.UserType}).ToList();if (listUserType.Count > 0){//=确认身份正确
//把用户数据放到session中//获取用户类型名称string userTypeName = listUserType[0].UserType.Trim();//获取用户类型IDint userTypeId = listUserType[0].UserTypeID;//设置sessionSession["UserID"] = dbUser.UserID;//传递UserIDSession["UserTypeID"] = userTypeId;//传递UserTypeIDSession["ServerTime"] = DateTime.Now.ToString("yyy-MM-dd HH:mm:ss");//登录时间//记住用户信息 使用cookieif (strIsRember != null && strIsRember.Trim() == "true"){//记住//记住密码 保存cookieHttpCookie cookie = new HttpCookie("user");cookie.Expires = DateTime.Now.AddDays(7);//保存7天cookie["UserNuber"] = strUserNuber;//用户名cookie["Password"] = strPassword;//密码Response.Cookies.Add(cookie);}else{//忘记HttpCookie cookie = new HttpCookie("user");cookie.Expires = DateTime.Now.AddDays(-1);//有效期设置为昨天,浏览器会自动删除cookieResponse.Cookies.Add(cookie);}strMsg = "success";//登录成功}else{strMsg = "userTypeErro";//用户类型错误}}else{strMsg = "passwordErro";//密码错误}}catch (Exception e){strMsg = "userNoExsit";//没有此用户Console.Write(e);//throw;}return Json(strMsg, JsonRequestBehavior.AllowGet);}

完整代码就是这样的了,如果还需要其他的判断条件可自行添加上去。效果图:
在这里插入图片描述
如果需要按回车键登录的话,

//按下回车键实现登录效果function onreturn() {if (window.event.keyCode == 13) {$("#btnSubmit").click();}}

http://chatgpt.dhexx.cn/article/XRiBLGWD.shtml

相关文章

核函数(多项式,高斯核)以及svm解决回归问题

文章目录 一、SVM最优化问题转换1、多项式核函数 二、高斯核函数1.引入库1、多项式特征2、高斯核函数升维举例3、高斯核函数超参数gamma 三、svm解决回归问题总结 一、SVM最优化问题转换 变换为数学上一个更好解的 在这个式子中有重要的一项Xi&#xff0c;Xj 两个样本的点乘…

高斯核-高斯模糊

大白话高斯模糊 以二维高斯为例&#xff0c;公式&#xff1a; 高斯模糊的原理,可以理解成每一个像素都取周边像素的加权平均值 以高斯分布取g矩阵的值得到的模糊方法即为高斯模糊 权重矩阵 假定中心点的坐标是&#xff08;0,0&#xff09;&#xff0c;那么距离它最近的8个点的…

数值实验-高斯核函数 python/matlab 实现

支持向量机 支持向量&#xff1a;支持平面把两类类别划分开的超平面的向量点机&#xff1a;一种算法SVM 是一种二分类模型线性可分支持向量机&#xff1a;通过硬间隔最大化&#xff0c;学习一个线性分类器线性支持向量机&#xff1a;通过软间隔最大化&#xff0c;学习一个线性…

CS131专题-2:高斯核、噪声、滤波

目录 1 高斯核 1.1 一维定义 1.2 二维定义 1.2.1 应用高斯核的过程 1.2.2 不同σ值的高斯核情况 1.2.3 不同核宽度情况 1.2.4 高斯核&#xff08;滤波&#xff09;特性 1.2.5 使用高斯核做平滑滤波相对箱式滤波的优点 2 噪声 和 滤波 2.1 椒盐噪声、脉冲噪声 2.1.1 …

python高斯核函数_机器学习:SVM(核函数、高斯核函数RBF)

一、核函数(Kernel Function) 1)格式 K(x, y):表示样本 x 和 y,添加多项式特征得到新的样本 x、y,K(x, y) 就是返回新的样本经过计算得到的值; 在 SVM 类型的算法 SVC() 中,K(x, y) 返回点乘:x . y 得到的值; 2)多项式核函数 业务问题:怎么分类非线性可分的样本…

高斯整数matlab,Matlab---自适应高斯核

MCNN提出了适用于高密度人群的自适应高斯核: 笔者所理解的自适应高斯核函数: %function:通过高斯核产生相应的密度矩阵 %parameter: im:输入图像,灰度图; points:标注的点[X Y],n*2的矩阵 function im_density = get_density_map_autogaussian(im,points) im_density =…

高斯核原理详解+生成高斯核的Python代码

要搞清楚高斯核的原理的话&#xff0c;把下面这篇博文认认真真看一遍就可以了&#xff0c;链接如下&#xff1a; https://blog.csdn.net/u013066730/article/details/123112159 下面是我认为值得注意和需要补充说明的几点&#xff1a; 1 为什么高斯滤波能够让图像实现模糊化&a…

C语言哈希表UT_hash的使用方法详解

由于C语言本身不存在哈希,因此&#xff0c;我们可以调用开源的第三方头文件&#xff0c;这只是一个头文件&#xff1a;uthash.h&#xff0c;使用时只需要在文件首部编写#include<uthash.h>即可。 uthash的使用 #include "uthash.h" struct my_struct {int id…

utxo 是什么

UTXO 代表 Unspent Transaction Output。 在比特币社区里&#xff0c;Transaction 被简称为 TX&#xff0c;所以上面这个短语缩写为 UTXO。一般会认为 UTXO 是比特币区块链设计当中的一部分&#xff0c;但事实上 UTXO 和区块链没有必然的联系&#xff0c;你可以完全照搬比特币区…

UT单元测试(一)——基础流程总结篇

参考书籍《单元测试的艺术》 一、单元测试的定义 一个单元测试是一段代码&#xff08;通常是一个方法&#xff09;&#xff0c;这段代码调用另一段代码&#xff08;一个单元可以是一个方法或函数&#xff09;&#xff0c;然后检验某些假设的正确性。如果这些假设是正确的&a…

UT标记详细说明

原来论坛用的是UT标记&#xff0c;UT是UltraThreads的简写。 微软word用的是Microsoft Word XML。 网页用的html ------------------------------------------------------------------ 什么是UT代码&#xff1f; UT标记对HTML的简化。一般情况下&#xff0c;即使指定讨论区禁…

UT-890J ( USB -2- RS422/485 Cable )

USB -2- RS422/485 Cable < 參考 網路文章 / 規格書 > DB9 公頭 (有 DB9轉 KF128螺絲端子轉接板 ) UT890_20190220152556_43695-2.pdf 驅動下載: UT890_Win XP Server2003 2008 Vista 7 8 32-64bit FT-232 USB-232 Chip USB -2- RS422/485 Cable < 參考文章 / 規格書…

RTU是什么及其用途

RTU是Remote Terminal Unit&#xff08;远程终端单元&#xff09;的缩写&#xff0c;是一种用于实现现动器等现场控制设备&#xff0c;实现对现场设备的实时监控&#xff0c;用途包括以下几个方面&#xff1a; 1.压力、流量等。 2.实时监测&#xff1a;RTU可以对现场设备进行…

RTU和DTU的区别是什么?

在物联网应用中&#xff0c;我们经常使用到两种数据传输设备——DTU和RTU。它们的功能大致相似&#xff0c;但又有些许不同。那在实际应用中&#xff0c;什么情况选择DTU&#xff0c;什么情况选择RTU呢&#xff1f;下面我们就一起来看看&#xff0c;它们之间到底有什么区别以及…

RTU和DTU分别是什么?

RTU和DTU是两种常见的远程数据采集和传输设备&#xff0c;虽然它们都是用于实现远程数据采集和传输&#xff0c;但在一些方面存在不同&#xff0c;下面是两者的区别。1、定义RTU是Remote Terminal Unit的缩写&#xff0c;翻译为“远程终端单元”&#xff0c;它是一种用于实现远…

硬刚Hive | 4万字基础调优面试小总结

本文基本涵盖以下内容&#xff1a; 一、基于Hadoop的数据仓库Hive基础知识二、HiveSQL语法三、Hive性能优化四、Hive性能优化之数据倾斜专题五、HiveSQL优化十二板斧六、Hive面试题(一)七、Hive/Hadoop高频面试点集合(二) 基于Hadoop的数据仓库Hive基础知识 Hive是基于Hadoop的…

数据结构知识点_重点期考总结复习

目录 前言数据数据的逻辑结构和物理结构逻辑结构物理结构&#xff08;存储结构&#xff09; 算法特性和时间复杂度算法的五大特性算法的时间复杂度 线性表线性表两种存储结构顺序表链型表线性表分析 栈和队列栈队列 串串的基本操作定长存储结构堆分配存储结构块链存储表示串的模…

前端JS/TS面试题

JS面试题总结 一、this指向问题&#xff08;1&#xff09;this的理解&#xff08;2&#xff09;怎样改变this的指向问题&#xff08;3&#xff09;Call,bind,apply三者的区别&#xff08;4&#xff09;容易判读错的几种this情况&#xff08;5&#xff09;this指向问题&#xff…

3.Hadoop Hive服务

接上文—————> 目录&#xff1a; 一.安装二.have基本命令操作三.hive数据仓库四.hive表的类型&#xff1a;五.hive中重要的元数据表六.hive的连接方式七.使用jdbc编写外部程序操作hive八.hive的基本数据类型九.hive的复杂的数据类型十.hive的建表语句十一.hive 删除表十…

深入理解计算机系统(CSAPP)含lab详解 完结

文章目录 深入理解计算机操作系统-第一章1.1 信息就是位 上下文1.2 程序被其他程序翻译成不同的格式1.3 了解编译系统如何工作是大有益处的1.4 处理器读并解释储存在内存中的指令1.4.1 系统的硬件组成I/O 设备1.4.2 运行 hello 程序 1.5 高速缓存至关重要1.6 存储设备形成层次…