日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

PHP+jQuery+Ajax实现用户登录与退出

發(fā)布時間:2025/6/15 php 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP+jQuery+Ajax实现用户登录与退出 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

用戶登錄與退出功能應(yīng)用在很多地方,而在有些項目中,我們需要使用Ajax方式進行登錄,登錄成功后只刷新頁面局部,從而提升了用戶體驗度。本文將使用PHP和jQuery來實現(xiàn)登錄和退出功能。

查看演示?下載源碼

準備數(shù)據(jù)庫

本例我們使用Mysql數(shù)據(jù)庫,創(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?'登錄時間',?
??`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)登錄信息,如果點擊“退出”,則退出到用戶登錄界面。

進入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>上次登陸本站的時間是:<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"?class="input"?name="user"?id="user"?/></p>?
??????????<p><label>密?碼:</label>?<input?type="password"?class="input"?name="pass"?id="pass"?/>?
</p>?
??????????<div?class="sub">?
??????????????<input?type="submit"?class="btn"?value="登?錄"?/>?
??????????</div>?
??????</div>?
??????<?php?}?>?
</div>?

注意在index.php文件頭應(yīng)該加上語句:session_start; 同時在head部分引入jquery庫,以及包含global.js,您還可以為登錄框?qū)憘€漂亮的CSS樣式,當然本例已經(jīng)略微寫了個簡單的樣式,請查看源碼。

<script?type="text/javascript"?src="js/jquery.js"></script>?
<script?type="text/javascript"?src="js/global.js"></script>??

global.js

global.js文件包括了將要實現(xiàn)的jquery代碼。首先要做的就是讓輸入框獲得焦點,像百度和google那樣一打開,鼠標光標就在輸入框內(nèi)。使用代碼如下:

$(function(){?
????$("#user").focus();?
});?

接著要做的就是,當輸入框獲得和失去焦點時,分別呈現(xiàn)不同的樣式,比如本例中使用不同的邊框顏色,代碼如下:

$("input:text,textarea,input:password").focus(function()?{?
????$(this).addClass("cur_select");?
});?
$("input:text,textarea,input:password").blur(function()?{?
????$(this).removeClass("cur_select");?
});?

用戶登錄:用戶點擊登錄按鈕后,首先要驗證用戶的輸入不能為空,然后向后臺login.php發(fā)送一個Ajax請求。當后臺驗證登錄成功后,返回登錄用戶信息:如用戶登錄次數(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>上次登錄本站的時間是:<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;?
????????????}?
????????}?
????});?
});?

我在進行Ajax請求時,數(shù)據(jù)傳輸格式使用的是json,返回的數(shù)據(jù)也是json數(shù)據(jù),使用JS將json數(shù)據(jù)解析,得到登錄后的用戶信息,然后通過append追加到#login元素下,完成登錄操作。

用戶退出:當點擊“退出”時,向login.php發(fā)送一個Ajax請求,后臺注銷所有Session,頁面重新回到登錄界面。

$("#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'?class='input'?name='user'?id='user'?/></p>?
?????????????<p><label>密?碼:</label>?<input?type='password'?class='input'?name='pass'??
id='pass'?/></p>?
?????????????<div?class='sub'><input?type='submit'?class='btn'?value='登?錄'?/></div>?
?????????????</div>";?
?????????????$("#login").append(div);?
????????}?
????});?
});?

login.php

根據(jù)前臺提交的請求,登錄時,獲取用戶輸入的用戶名和密碼,并與數(shù)據(jù)庫中對應(yīng)的用戶名和密碼進行比對,如果比對成功,則將新的更新該用戶登錄信息,并組裝json數(shù)據(jù)傳給前臺。

session_start();?
require_once?('connect.php');?
?
$action?=?$_GET['action'];?
if?($action?==?'login')?{??//登錄?
????$user?=?stripslashes(trim($_POST['user']));?
????$pass?=?stripslashes(trim($_POST['pass']));?
????if?(empty?($user))?{?
????????echo?'用戶名不能為空';?
????????exit;?
????}?
????if?(empty?($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']?=?'用戶名或密碼錯誤!';?
????}?
????echo?json_encode($arr);?//輸出json數(shù)據(jù)?
}?
elseif?($action?==?'logout')?{??//退出?
????unset($_SESSION);?
????session_destroy();?
????echo?'1';?
}?

當前臺請求退出時,只需注銷session就可以,并返回1給前臺JS處理。注意上述代碼中g(shù)et_client_ip()是獲取客戶端IP的函數(shù),限于篇幅未能列出,大家可以下載源代碼查看。

好了,一套完成的用戶登錄和退出程序完成,不足之處在所難免,歡迎大家批評指正。

總結(jié)

以上是生活随笔為你收集整理的PHP+jQuery+Ajax实现用户登录与退出的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本高清视频一区二区 | 乱人伦xxxx国语对白 | 亚洲国产日韩欧美 | 国产在线视频网站 | 欧美成人一区在线观看 | 日韩成人午夜电影 | 涩涩视频免费观看 | 成人你懂的 | 国产精品美女网站 | www国产视频 | 999久久久精品 | 在线观看麻豆 | 成人吃奶视频 | 日韩精品一区二区三区丰满 | 久久久久亚洲av无码麻豆 | 亚洲男女啪啪 | 国产精品一页 | 91中文字幕在线播放 | 五号特工组之偷天换月 | 日韩欧美字幕 | 欧美一级免费视频 | 久久久老司机 | 最近中文字幕免费 | 日日夜夜精品视频免费 | 91少妇丨porny丨 | 欧美在线国产 | 爱情岛亚洲品质自拍极速福利网站 | 久操视频免费观看 | 中文字幕无码精品亚洲 | hd极品free性xxx护士 | 开心色站 | 日本亚洲最大的色成网站www | 日韩丰满少妇无码内射 | 国产九色| 亚洲一二三不卡 | 18做爰免费视频网站 | av国产片 | 色眯眯网| 欧美最猛黑人xxxx黑人猛交 | 欧洲精品一区二区三区久久 | 欧洲美女与动交zozzo | 看国产黄色片 | 久久成人免费视频 | 潮见百合子 | 草在线视频 | 一本色道久久综合 | 玩弄少妇人妻 | 男女啪啪免费看 | 欧美一级二级三级视频 | 男人资源网站 | 久久深夜 | 国产伦精品一区二区三区高清 | 国产永久免费观看 | 欧美成人aa | 午夜aa| 台湾男男gay做爽爽的视频 | 亚洲黄视频 | 涩涩涩999 | 制服 丝袜 综合 日韩 欧美 | 一级黄色片在线免费观看 | 丝袜老师让我了一夜网站 | 日韩人妻无码一区二区三区 | 日本不卡在线播放 | 天天做日日做 | 成为性瘾网黄的yy对象后 | wwwxxx日本人 | 精品人妻无码一区二区三区蜜桃一 | 国产成人无码精品久久二区三 | 色综合久| 性欧美一区二区三区 | 爽爽窝窝午夜精品一区二区 | 精品不卡一区二区三区 | 欧美精品一区二区蜜桃 | 综合久久影院 | 男生把女生困困的视频 | 色人阁五月| 女人脱下裤子让男人捅 | 亚洲区色| 亚洲一区第一页 | 久久综合久久鬼色 | 亚洲熟妇无码一区二区三区导航 | 亚洲色图1| 国产日韩91| 男插女视频在线观看 | 成人美女在线观看 | 日韩色图一区 | 日韩在线播放中文字幕 | 国产精品久久久久久久无码 | av免费播放 | 日韩欧美三级在线观看 | 欧美精品一区视频 | 男女羞羞的视频 | 91日本在线观看 | 欧美日韩国产成人在线 | 国产一区二区麻豆 | 久久精品视频网站 | 高跟91白丝 | 亚洲国产欧美一区二区三区深喉 | av不卡一区二区三区 |