


Jquery를 사용하여 최고의 사용자 경험을 갖춘 로그인 페이지를 구축하고 비밀번호 자동 로그인 기능을 기억하세요(백그라운드 코드 포함)_jquery
플러그인 jquery.md5.js를 도입해야 합니다.
IIS에서 직접 실행할 수 있습니다.
사용자 이름: Ethan.zhu
비밀번호: 123456789
전체 파일 다운로드: WebApplication1_jb51.rar
먼저 버튼 클릭 이벤트의 비동기 검증을 별도의 함수로 추출하고, 버튼 클릭 이벤트의 변수를 추출하여 전역 변수로 정의한 후 editPass(사용) 변수를 추가해야 합니다. 입력을 직접 표시하려면) 비밀번호 또는 쿠키에서 읽은 비밀번호)
varwrongTypeName, //잘못된 유형의 사용자 이름은 오류 메시지 배열의 첨자로 직접 사용될 수 있습니다.
wrongTypePwd, //잘못된 유형의 사용자 비밀번호
wrongNameHtml = new Array("", "사용자 이름을 입력하세요.", "사용자 이름이 너무 짧습니다.", "사용자 이름이 12자를 초과합니다.", "사용자 이름이나 비밀번호가 잘못되었습니다.", "시간이 초과되었습니다. 다시 로그인하세요."),
wrongPwdHtml = new Array("", "비밀번호를 입력하세요", "비밀번호 길이가 6자 미만입니다.", "", "비밀번호에 잘못된 문자가 포함되어 있습니다."),
editPass=false
이전 글의 버튼 클릭 이벤트부터 시작 :
$(".btn-submit").click (function () {
wrongTypeName = 0;
wrongTypePwd = 0;
var uname = $("#uname").val( ), //사용자 이름
pwd = $("# passwd").val(), //사용자 비밀번호
plength = pwd.length,
nlength = uname.length //길이
if (nlength == 0)
wrongTypeName = 1;
if (nlength > 0 && nlength < 2)
wrongTypeName = 2
if (nlength > 20)
wrongTypeName = 3;
if (plength == 0)
wrongTypePwd = 1; //여기서 사용자 이름과 비밀번호의 길이에 대한 판단과 오류 메시지 배열의 아래 첨자를 얻습니다.
else {
var patrn = /^(w){6,20}$/;
if (plength < 6)
wrongTypePwd = 2
if (plength > 50; )
wrongTypePwd = 3;
if (plength > 6 && plength < 20) {
if (!patrn.exec(pwd))
wrongTypePwd = 4; user 프런트 엔드는 비밀번호의 유효성을 판단하고 오류 배열
}
}
inputTip(0,wrongNameHtml,wrongTypeName)
inputTip(1,wrongPwdHtml)의 첨자를 반환합니다. ,wrongTypePwd); if (wrongTypePwd == 0 &&wrongTypeName == 0) {//사용자 입력 정보가 완전히 합법적인 경우, 즉 모든 배열 첨자가 0인 경우 Ajax 검증을 시작합니다
//alert($.cookie("logout"));
if(editPass){
pwd = $.md5(pwd)
}
$("#passwd").val (pwd);
$("#login-form input").attr('disabled', true)
$('.remember').unbind('click'); 정보가 서버에 제출되었으므로 페이지의 모든 입력 상자 버튼을 비활성화 상태로 설정하면 반복 제출을 효과적으로 방지할 수 있습니다.
var remb = $('#remember-long').val()
ajaxCheck(uname, pwd, remb);
}
})
33행과 41행의 변경.
라인은 주로 ajax 처리 과정을 추출하고, 서버 인증 성공 후 비밀번호를 기억하고 비밀번호 기억을 취소하는 연산도 추가하여 읽기 쉽게 했습니다:
var ajaxCheck = function (uname, pwd, remb) {
$(".btn-master").addClass("visibility")
var $params = "user_name=" decodeURI (uname) "&user_pwd=" decodeURI(pwd) "&remember=" decodeURI(remb);
$.ajax({
type: 'POST',
url: 'CheckUserLogin.aspx',
//async: false,
캐시: false,
dataType: 'json'
data: $params,
success: function(data, status) {
wrongTypeName = data.wrongTypeName ;
wrongTypePwd = data.wrongTypePwd;
var loginSuccess = data.loginSuccess; //서버에서 반환된 json 데이터 가져오기
if (loginSuccess == 0) {
if ($('# Remember- long').val() == 1) {//비밀번호 기억
$.cookie('UserName', uname, { 만료: 7, 경로: '/' })
$.cookie ( '비밀번호', 비밀번호, { 만료: 7, 경로: '/' })
}
else if ($('#remember-long').val() == 0) {// 취소 기억된 비밀번호 또는 비밀번호가 기억되지 않음
$.cookie('UserName', null,{ 만료: 7, 경로: '/' })
$.cookie('Password', null,{ 만료: 7, 경로: '/' });
}
location.href = "/Members/Members.html"
}
else {
$(".btn-master ") .removeClass("visibility");
$("#login-form input").attr('disabled', false)
inputTip(0,wrongNameHtml,wrongTypeName); wrongPwdHtml,wrongTypePwd)
}
},
오류: function () {
wrongTypeName = 5;
inputTip(0,wrongNameHtml,wrongTypeName); -양식 입력").attr('disabled', false);
$('.remember').bind('click', function () { checkClick(); });
$( ". btn-master").removeClass("visibility");
}
})
}
페이지 초기화 시 비밀번호를 기억하는 과정을 거쳐야 합니다. :
if (ckname != "" && ckpwd ! = "" && ckname != null && ckpwd != null) {
$('#remember-long').val("1")
$('#remember-long'). attr(' selected', true);
$("#uname").val(ckname); //사용자 이름
$('.reg-item').addClass('focus'); >if (logout=="safe"){
$.cookie("logout","",{ 만료: 1, 경로: '/' })
}
else{
$ (" #passwd").val(ckpwd); //사용자 비밀번호
$(".btn-submit").trigger('click') //자동 로그인
}
}
else {
$('#remember-long').val("0")
$('#remember-long').attr('checked', false)
}
}
var logout = $.cookie("logout");
//사용자가 내부에서 로그아웃할지 아니면 직접 열지 확인
//사용자가 로그아웃한 경우 내부에서는 자동으로 다시 로그인할 수 없습니다. 사용자가 페이지를 새로 고치지 않는 한 로그인하세요.
rememberPassword(logout)
다음은 완전한 새 프런트엔드 스크립트입니다.
코드 복사
$(function () {
varwrongTypeName, //오류 메시지 배열의 첨자로 직접 사용할 수 있는 잘못된 유형의 사용자 이름
wrongTypePwd, / /잘못된 사용자 비밀번호 Type
wrongNameHtml = new Array("", "사용자 이름을 입력하세요.", "사용자 이름이 너무 짧습니다.", "사용자 이름이 12자를 초과합니다.", "사용자 이름이 또는 비밀번호가 잘못되었습니다.", "시간이 초과되었습니다. 다시 로그인하세요."),
wrongPwdHtml = new Array("", "비밀번호를 입력하세요", "비밀번호 길이가 6자 미만입니다.", "", "비밀번호에 잘못된 내용이 포함되어 있습니다. 문자"),
editPass=false;
$('body').focus(); //입력 상자가 더 이상 자동으로 포커스를 얻지 않도록 합니다
$('.reg -action .reg-input').each(function ( ) {
var items = $(this).parent('.reg-item');
if ($(this).val()) {
items.addClass("focus");
}
$(this).bind('focus Blur', function (event) {
var type = event.type; //Get 이벤트 유형
if($(this).attr ("id")=="passwd"){
editPass = true
}
if (type == 'focus') {
if (items.hasClass('error')) {
$(this).val("")
items.removeClass('error')
}
항목. addClass('focus');
} else if ( !$(this).val()) {
items.removeClass('focus')
}
})
} );
$(".btn- submit").click(function () {
wrongTypeName = 0;
wrongTypePwd = 0;
var uname = $("#uname" ).val(), //사용자 이름
pwd = $("#passwd").val(), //사용자 비밀번호
plength = pwd.length,
nlength = uname.length; 길이
if (nlength == 0)
wrongTypeName = 1;
if (nlength > 0 && nlength < 2)
wrongTypeName = 2
if (nlength > 20)
wrongTypeName = 3;
if (plength == 0)
wrongTypePwd = 1; //사용자 이름과 비밀번호의 길이에 대한 판단이며 오류 메시지 배열의 아래 첨자를 가져옵니다.
else {
var patrn = /^(w){6,20}$/;
if (plength < 6)
wrongTypePwd = 2
if (plength > 50; )
wrongTypePwd = 3;
if (plength > 6 && plength < 20) {
if (!patrn.exec(pwd))
wrongTypePwd = 4; user 프런트 엔드는 비밀번호의 유효성을 판단하고 오류 배열
}
}
inputTip(0,wrongNameHtml,wrongTypeName)
inputTip(1,wrongPwdHtml)의 첨자를 반환합니다. ,wrongTypePwd); if (wrongTypePwd == 0 &&wrongTypeName == 0) {//사용자 입력 정보가 완전히 합법적인 경우, 즉 모든 배열 첨자가 0인 경우 Ajax 검증을 시작합니다
//alert($.cookie("logout"));
if(editPass){
pwd = $.md5(pwd)
}
$("#passwd").val (pwd);
$("#login-form input").attr('disabled', true)
$('.remember').unbind('click'); 정보가 서버에 제출되었으므로 페이지의 모든 입력 상자 버튼을 비활성화 상태로 설정하면 반복 제출을 효과적으로 방지할 수 있습니다.
var remb = $('#remember-long').val()
ajaxCheck(uname, pwd, remb);
}
})
var inputTip = function(index,tipHtml,tipNum) {
$(".reg-tip" ).eq(index) .html(tipHtml[tipNum])
if (tipNum > 0)
$(".reg-item").eq(index).addClass("error");
else
$(".reg-item").eq(index).removeClass("error")
} //오류 메시지 페이지 표시 기능을 정의합니다.페이지에 입력란이 2개뿐이므로 여기에 인덱스를 직접 지정합니다. 페이지에 여러 개가 있으면 $(this).index()
var ajaxCheck = function (uname, pwd, remb) {
$(".btn-master").addClass("visibility")
var $params = "user_name=" decodeURI(uname) "&user_pwd=" decodeURI(pwd) "&기억 =" decodeURI(remb) ;
$.ajax({
유형: 'POST',
url: 'CheckUserLogin.aspx',
//async: false,
캐시: false ,
dataType: 'json',
data: $params,
success: 함수(데이터, 상태) {
wrongTypeName = data.wrongTypeName;
wrongTypePwd = data.wrongTypePwd; >var loginSuccess = data.loginSuccess; //서버에서 반환된 json 데이터 가져오기
if (loginSuccess == 0) {
if ($('#remember-long').val() == 1 ) {//비밀번호 기억
$.cookie('UserName', uname, { 만료: 7, 경로: '/' })
$.cookie('Password', pwd, { 만료: 7, path: '/' }) ;
}
else if ($('#remember-long').val() == 0) {//기억된 비밀번호를 취소하거나 비밀번호를 기억하지 마세요
$.cookie(' UserName', null,{ 만료: 7, 경로: '/' })
$.cookie('Password', null,{ 만료: 7, 경로: '/' }) ;
}
location.href = "/Members/Members.html"
}
else {
$(".btn-master").removeClass("visibility")
$("#login -form input").attr('disabled', false);
inputTip(0,wrongNameHtml,wrongTypeName)
inputTip(1,wrongPwdHtml,wrongTypePwd);
},
error: function () {
wrongTypeName = 5;
inputTip(0,wrongNameHtml,wrongTypeName);
$("#login-form input").attr(' 비활성화됨', false);
$('.remember').bind('click', function () { checkClick(); })
$(".btn-master").removeClass(" visible");
}
})
}
var checkClick = function () {
if ($('#remember-long').attr('checked' )) {
$ ('#remember-long').attr('checked', false)
$('#remember-long').val("0")
}
else {
$ ('#remember-long').attr('checked', true)
$('#remember-long').val("1")
}
}
$( '.remember').bind('click', function () { checkClick(); })
$("#remember-long").click(function () { checkClick (); });//로그인 체크박스와 라벨 클릭의 바인딩을 기억하세요.
if ($.browser.msie && $.browser.version == "6.0") {
//Microsoft가 ie6을 제거하도록 도와주세요
if ($.cookie('masterShow') != "hidden")
$('body').append('< div class="m-close m-close-short">닫기
$(".master").delay(1000).slideDown('', function () {
$(".m-close").fadeIn();
});
$(".m-close-short").click(function () {
$(".m-close").fadeOut('', function () {
$(".master") .slideUp();
});
$(".m-close-long").click(function () {
$( ".m-close") .fadeOut('', function () {
$(".master").slideUp();
$.cookie('masterShow', 'hidden');
});
});
}
var RememberPassword = function (logout) {//페이지 로드 후 자동 로그인 확인 수행
var ckname = $.cookie(' UserName');
var ckpwd = $.cookie("Password");
if (ckname != "" && ckpwd != "" && ckname != null && ckpwd != null) {
$('#remember-long' ).val("1")
$('#remember-long').attr('checked', true)
$("#uname").val (ckname); //사용자 이름
$('.reg-item').addClass('focus')
if (logout=="safe"){
$.cookie("logout" ,"",{ 만료: 1, 경로: '/' })
}
else{
$("#passwd").val(ckpwd) //사용자 비밀번호
$( ".btn-submit") .trigger('click'); //자동 로그인
}
}
else {
$('#remember-long').val("0" )
$(' #remember-long').attr('checked', false)
}
}
var logout = $.cookie("logout");/ /사용자가 Exit
rememberPassword(logout)
$(document).bind('keydown', 'return', function () { $(".btn-submit")에 있는지 확인합니다. ).trigger('click') ; });
})
페이지에 관련된 백그라운드 프로그램은 페이지 수준 aspx를 사용했습니다. 물론 ashx를 사용할 수도 있습니다. 처리해. 이 백그라운드 처리는 비밀번호가 올바른지 확인하고 사용자가 올바르게 로그인한 경우 세션 값을 설정하는 역할을 담당합니다. 시연이 필요한 경우 백그라운드에서 상수를 정의하여 확인 판단을 내릴 수 있습니다.
코드 복사
Hashtable ht = new Hashtable();
string uname = Request.Params["user_name"];
string pwd = Request.Params["user_pwd"]
intwrongTypeName = 0;
intwrongTypePwd = 0;
uname = PageValidate.InputText(uname, 30);
if (Validator.StrIsNullOrEmpty(uname))
{
wrongTypeName = 1;
}
if (Validator.StrIsNullOrEmpty(pwd))
{
wrongTypePwd = 1;
}
if (!string.IsNullOrEmpty(uname) && !string.IsNullOrEmpty(pwd) ))
{
//시연을 위해 다음 상수가 사용됩니다:
string userName="ethan.zhu";
string 비밀번호="";//MD5 암호화 이후의 문자열이 필요합니다
if (uname==userName&&password==pwd )
ht.Add("loginSuccess", 0);
else
wrongTypeName = 4;//사용자 이름 또는 비밀번호 반환 오류
if (wrongTypeName > 0 ||wrongTypePwd > 0)
{
ht.Add("wrongTypeName",wrongTypeName)
ht.Add("wrongTypePwd",wrongTypePwd)
}; 🎜>Response.Write(CreateJsonParams(ht));
}
Response.End();
}
🎜>
string returnStr = "";
foreach(항목의 DictionaryEntry 항목)
{
returnStr = """ item.Key.ToString() "":"" item.Value.ToString() ""," ;
}
return "{" returnStr.Substring(0, returnStr.Length - 1) "}"
}

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제









과학과 기술의 지속적인 발전으로 인해 통신 장비에 대한 사람들의 요구 사항도 지속적으로 증가하고 있습니다. 시장에서는 Vivox100s와 X100이 많은 주목을 받고 있는 휴대폰 브랜드이다. 그들은 모두 독특한 특성을 가지고 있으며 각각 고유한 장점을 가지고 있습니다. 이 기사에서는 소비자가 두 휴대폰을 더 잘 이해할 수 있도록 두 휴대폰의 사용자 경험 차이를 비교합니다. Vivox100s와 X100의 외관 디자인에는 분명한 차이가 있습니다. Vivox100s는 얇고 가벼운 본체와 편안한 손 느낌을 갖춘 패셔너블하고 심플한 디자인 스타일을 채택했으며 X100은 실용성에 더 많은 관심을 기울였습니다.

Android 휴대폰의 카메라 기능을 논할 때 대부분의 사용자는 Apple 휴대폰과 비교하여 일반적으로 Android 휴대폰의 카메라 성능이 더 좋다고 생각합니다. 이 견해는 근거가 없는 것이 아니며 실제적인 이유도 분명합니다. 고급 Android 휴대폰은 하드웨어 구성, 특히 카메라 센서 측면에서 더 큰 경쟁 우위를 가지고 있습니다. 많은 고급 Android 휴대폰은 최신 최고급 카메라 센서를 사용하는데, 이는 픽셀 수, 조리개 크기 및 광학 줌 기능 측면에서 동시에 출시된 iPhone보다 뛰어난 경우가 많습니다. 이러한 장점을 통해 Android 휴대폰은 사진 촬영 및 비디오 녹화 시 고품질 이미지 효과를 제공하여 사진 및 비디오 촬영에 대한 사용자 요구를 충족할 수 있습니다. 따라서 하드웨어 구성의 경쟁우위는 안드로이드폰의 매력적인 요소가 되었다.

3월 31일, CNMO는 Xiaomi Auto 모바일 애플리케이션이 3월 31일 Apple App Store 무료 애플리케이션 순위에서 1위를 차지한 것을 확인했습니다. Xiaomi Auto의 공식 앱은 포괄적인 기능과 우수한 사용자 경험으로 대다수 사용자의 호감을 얻어 빠르게 목록 1위를 차지한 것으로 알려졌습니다. 화제가 되고 있는 이 샤오미 오토 앱은 온라인 자동차 구매 프로세스의 원활한 연결을 실현할 뿐만 아니라 원격 차량 제어 서비스도 통합합니다. 사용자는 집을 떠나지 않고도 차량 상태 조회, 원격 작동 등 일련의 지능형 작업을 완료할 수 있습니다. 특히 샤오미 모터스 SU7의 신모델 출시와 동시에 앱이 출시돼 사용자는 앱을 통해 SU7의 구성 내역을 직관적으로 파악하고 성공적으로 사전 예약을 완료할 수 있다. Xiaomi Auto App 내부 디자인

사용자 경험의 5가지 요소: 1. 사용자 요구 사항, 사용자와 운영자가 이 제품에서 얻고자 하는 것 2. 기능 범위, 이 제품에는 어떤 기능이 있는지 3. 두 가지 주요 범주로 나눌 수 있는 프로세스 설계 디자인 및 정보 아키텍처 부분에서 상호 작용 디자인은 "가능한 사용자 행동"을 설명하고 정보 아키텍처는 사용자에게 정보를 표현하는 방법에 중점을 둡니다. 4. 섹션이나 버튼과 같은 상호 작용 요소를 배치할 위치를 결정하는 디자인; 5. 지각적 디자인, 콘텐츠, 기능성, 미학을 결합하여 다른 수준의 모든 목표를 충족하는 최종 디자인을 만드는 것입니다.

Vue의 서버 측 통신 프로세스 분석: 사용자 경험을 개선하는 방법 소개: 인터넷의 급속한 발전으로 인해 클라이언트와 서버 간의 통신이 점점 더 중요해지고 있습니다. 최신 JavaScript 프레임워크인 Vue는 개발자에게 서버 측 통신을 구현하기 위한 풍부한 도구와 기술을 제공합니다. 이 기사에서는 Vue의 서버 측 통신 프로세스를 자세히 살펴보고 사용자 경험을 개선하기 위한 몇 가지 팁과 모범 사례를 소개합니다. 1. Vue 서버 측 통신 프로세스 개요 Vue의 서버 측 통신 프로세스에는 다음과 같은 주요 단계가 포함됩니다.

7월 26일부터 7월 29일까지 연례 ChinaJoy2024가 상하이 신국제 엑스포 센터에서 성대하게 열릴 예정입니다. ViewSonic은 ZOL Zhongguancun Online과 협력하여 사용자와 게임 매니아를 위한 시각, 청각 및 촉각에 대한 전체 내용을 제공할 예정입니다. 잔치. ZOL Zhongguancun Online은 전국을 포괄하는 IT 인터랙티브 포털로, 제품 데이터, 전문 정보, 기술 영상, 인터랙티브 마케팅을 통합한 복합 미디어입니다. Zhongguancun Online은 차원의 벽을 허물고 "트렌디하고 재미있다"라는 주제로 ChinaJoy E7 홀 S101 부스에 등장해 전 세계 관객과 업계 관계자에게 다양하고 몰입도 높은 전시 경험을 선사했습니다. ViewSonic 전시장: 고급 디스플레이 기술 탐색 1

CodeIgniter는 강력한 PHP 프레임워크이지만 때로는 기능을 확장하기 위해 추가 기능이 필요할 수도 있습니다. 플러그인은 이를 달성하는 데 도움이 될 수 있습니다. 웹사이트 성능 향상부터 보안 향상까지 다양한 기능을 제공할 수 있습니다. 1.HMVC(Hierarchical Model View Controller) Hmvc 플러그인을 사용하면 CodeIgniter에서 계층화된 MVC 아키텍처를 사용할 수 있습니다. 이는 복잡한 비즈니스 로직이 있는 대규모 프로젝트에 유용합니다. HMVC를 사용하면 컨트롤러를 다양한 모듈로 구성하고 필요에 따라 이러한 모듈을 로드 및 언로드할 수 있습니다. 데모 코드: //config/routes.php에 다음 코드를 추가합니다: $route["/module/contr

3월 21일, CNMO는 DXOMARK가 Huawei Mate60Pro의 스크린 테스트 결과를 발표했는데, 이 결과는 143점으로 글로벌 스크린 순위 중위권에 올랐습니다. DXOMARK의 리뷰에 따르면, 기기의 화면은 편안한 사용자 경험을 제공합니다. 이전 세대 Huawei Mate50Pro에 비해 최신 버전의 화면은 동작 및 터치 반응, 아티팩트 관리가 크게 개선되어 사용자가 더 나은 시각적 경험을 즐길 수 있습니다. 화면 가독성은 기본적으로 이전 세대 제품 수준을 유지하고 있다. 저조도 환경에서의 밝기는 다소 부족하지만 대부분의 주변광 조건에서 가독성이 좋고 연색성이 정확하다. 특히 야외에서 가독성이 상당히 좋고, 화면 밝기도
