国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > PHP > 正文

PHP+jQuery+Ajax實(shí)現(xiàn)用戶登錄與退出

2020-03-22 18:19:16
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
用戶登錄與退出功能應(yīng)用在很多地方,而在有些項(xiàng)目中,我們需要使用html' target='_blank'>Ajax方式進(jìn)行登錄,登錄成功后只刷新頁(yè)面局部,從而提升了用戶體驗(yàn)度。本文將使用PHP和jQuery來(lái)實(shí)現(xiàn)登錄和退出功能。準(zhǔn)備數(shù)據(jù)庫(kù)
本例我們使用Mysql數(shù)據(jù)庫(kù),創(chuàng)建一張user表,表結(jié)構(gòu)如下:
CREATE TABLE `user` ( `id` int(11) NOT NULL auto_increment, `username` varchar(30) NOT NULL COMMENT '用戶名', `password` varchar(32) NOT NULL COMMENT '密碼', `login_time` int(10) default NULL COMMENT '登錄時(shí)間', `login_ip` varchar(32) default NULL COMMENT '登錄IP', `login_counts` int(10) NOT NULL default '0' COMMENT '登錄次數(shù)', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 然后往user表中插入一條用戶信息數(shù)據(jù):
INSERT INTO `user` (`id`, `username`, `password`, `login_time`, `login_ip`, `login_counts`) VALUES(1, 'demo', 'fe01ce2a7fbac8fafaed7c982a04e229', '', '', 0); index.php
用戶在輸入用戶名和密碼后,提示用戶登錄成功,并顯示相關(guān)登錄信息,如果點(diǎn)擊“退出”,則退出到用戶登錄界面。
進(jìn)入index.php,如果用戶已登錄則顯示登錄信息,如果未登錄則顯示登錄框要求用戶登錄。
div id="login" h3 用戶登錄 /h3 php if(isset($_SESSION['user'])){ div id="result" p strong php echo $_SESSION['user']; /strong ,恭喜您登錄成功! /p p 您這是第 span php echo $_SESSION['login_counts']; /span 次登錄本站。 /p p 上次登陸本站的時(shí)間是: span php echo date('Y-m-d H:i:s',$_SESSION['login_time']); /span /p p a href='#' id='logout' 【退出】 /a /p /div php }else{ div id="login_form" p label 用戶名: /label input type="text" name="user" id="user" / /p p label 密 碼: /label input type="password" name="pass" id="pass" / div input type="submit" value="登 錄" / /div /div php } /div 注意在index.php文件頭應(yīng)該加上語(yǔ)句:session_start; 同時(shí)在head部分引入jquery庫(kù),以及包含global.js,您還可以為登錄框?qū)憘€(gè)漂亮的CSSyangshi_10628_1.html' target='_blank'>CSS樣式,當(dāng)然本例已經(jīng)略微寫了個(gè)簡(jiǎn)單的樣式,請(qǐng)查看源碼。
script type="text/javascript" src="js/jquery.js" /script script type="text/javascript" src="js/global.js" /script global.js
global.js文件包括了將要實(shí)現(xiàn)的jquery代碼。首先要做的就是讓輸入框獲得焦點(diǎn),像百度和google那樣一打開,鼠標(biāo)光標(biāo)就在輸入框內(nèi)。使用代碼如下:
$(function(){ $("#user").focus(); 接著要做的就是,當(dāng)輸入框獲得和失去焦點(diǎn)時(shí),分別呈現(xiàn)不同的樣式,比如本例中使用不同的邊框顏色,代碼如下:
$("input:text,textarea,input:password").focus(function() { $(this).addClass("cur_select"); $("input:text,textarea,input:password").blur(function() { $(this).removeClass("cur_select"); 用戶登錄:用戶點(diǎn)擊登錄按鈕后,首先要驗(yàn)證用戶的輸入不能為空,然后向后臺(tái)login.php發(fā)送一個(gè)Ajax請(qǐng)求。當(dāng)后臺(tái)驗(yàn)證登錄成功后,返回登錄用戶信息:如用戶登錄次數(shù)和上次登錄時(shí)間等;如果登錄失敗,則返回登錄失敗信息。
$(".btn").live('click',function(){ var user = $("#user").val(); var pass = $("#pass").val(); if(user==""){ $(' div id="msg" / ').html("用戶名不能為空!").appendTo('.sub').fadeOut(2000); $("#user").focus(); return false; if(pass==""){ $(' div id="msg" / ').html("密碼不能為空!").appendTo('.sub').fadeOut(2000); $("#pass").focus(); return false; $.ajax({ type: "POST", url: "login.php action=login", dataType: "json", data: {"user":user,"pass":pass}, beforeSend: function(){ $(' div id="msg" / ').addClass("loading").html("正在登錄...").css("color","#999") .appendTo('.sub'); success: function(json){ if(json.success==1){ $("#login_form").remove(); var div = " div id='result' p strong "+json.user+" /strong ,恭喜您登錄成功! /p p 您這是第 span "+json.login_counts+" /span 次登錄本站。 /p p 上次登錄本站的時(shí)間是: span "+json.login_time+" /span /p p a href='#' id='logout' 【退出】 /a /p /div $("#login").append(div); }else{ $("#msg").remove(); $(' div id="errmsg" / ').html(json.msg).css("color","#999").appendTo('.sub') .fadeOut(2000); return false; }); 我在進(jìn)行Ajax請(qǐng)求時(shí),數(shù)據(jù)傳輸格式使用的是json,返回的數(shù)據(jù)也是json數(shù)據(jù),使用JS將json數(shù)據(jù)解析,得到登錄后的用戶信息,然后通過(guò)append追加到#login元素下,完成登錄操作。
用戶退出:當(dāng)點(diǎn)擊“退出”時(shí),向login.php發(fā)送一個(gè)Ajax請(qǐng)求,后臺(tái)注銷所有Session,頁(yè)面重新回到登錄界面。
$("#logout").live('click',function(){ $.post("login.php action=logout",function(msg){ if(msg==1){ $("#result").remove(); var div = " div id='login_form' p label 用戶名: /label input type='text' name='user' id='user' / /p p label 密 碼: /label input type='password' name='pass' id='pass' / /p div input type='submit' value='登 錄' / /div /div $("#login").append(div); }); login.php
根據(jù)前臺(tái)提交的請(qǐng)求,登錄時(shí),獲取用戶輸入的用戶名和密碼,并與數(shù)據(jù)庫(kù)中對(duì)應(yīng)的用戶名和密碼進(jìn)行比對(duì),如果比對(duì)成功,則將新的更新該用戶登錄信息,并組裝json數(shù)據(jù)傳給前臺(tái)。
session_start(); require_once ('connect.php'); $action = $_GET['action']; if ($action == 'login') { //登錄 $user = stripslashes(trim($_POST['user'])); $pass = stripslashes(trim($_POST['pass'])); if (emptyempty ($user)) { echo '用戶名不能為空'; exit; if (emptyempty ($pass)) { echo '密碼不能為空'; exit; $md5pass = md5($pass); //密碼使用md5加密 $query = mysql_query("select * from user where username='$user'"); $us = is_array($row = mysql_fetch_array($query)); $ps = $us $md5pass == $row['password'] : FALSE; if ($ps) { $counts = $row['login_counts'] + 1; $_SESSION['user'] = $row['username']; $_SESSION['login_time'] = $row['login_time']; $_SESSION['login_counts'] = $counts; $ip = get_client_ip(); //獲取登錄IP $logintime = mktime(); $rs = mysql_query("update user set login_time='$logintime',login_ip='$ip', login_counts='$counts'"); if ($rs) { $arr['success'] = 1; $arr['msg'] = '登錄成功!'; $arr['user'] = $_SESSION['user']; $arr['login_time'] = date('Y-m-d H:i:s',$_SESSION['login_time']); $arr['login_counts'] = $_SESSION['login_counts']; } else { $arr['success'] = 0; $arr['msg'] = '登錄失敗'; } else { $arr['success'] = 0; $arr['msg'] = '用戶名或密碼錯(cuò)誤!'; echo json_encode($arr); //輸出json數(shù)據(jù) elseif ($action == 'logout') { //退出 unset($_SESSION); session_destroy(); echo '1'; 當(dāng)前臺(tái)請(qǐng)求退出時(shí),只需注銷session就可以,并返回1給前臺(tái)JS處理。注意上述代碼中g(shù)et_client_ip()是獲取客戶端IP的函數(shù),限于篇幅未能列出,大家可以下載源代碼查看。
好了,一套完成的用戶登錄和退出程序完成,不足之處在所難免,歡迎大家批評(píng)指正。以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。PHP教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 武安市| 文水县| 安化县| 龙口市| 临武县| 军事| 新乡市| 长子县| 浪卡子县| 阿克| 渝北区| 无为县| 渝北区| 高州市| 临洮县| 剑川县| 古浪县| 临汾市| 梨树县| 基隆市| 山东| 商南县| 杨浦区| 东丰县| 江川县| 云霄县| 出国| 绍兴县| 滦平县| 西华县| 陇南市| 乐都县| 榆社县| 桐乡市| 浙江省| 阳曲县| 仁布县| 应用必备| 南召县| 通榆县| 潮安县|