thinkphp框架下實(shí)現(xiàn)登錄、注冊(cè)、找回密碼功能
本文實(shí)例為大家分享了thinkphp框架下使用ajax表單提交的登錄、注冊(cè)、找密碼的實(shí)現(xiàn)方法,以及注冊(cè)后的用戶需后臺(tái)審核。
user表的字段為id、num、password、name、email、addtime、status
具體代碼如下
<?php
namespace Home\Controller;
use Think\Controller;
class LoginController extends Controller {
//處理登錄
public function signin(){
if(IS_GET){
$this->display();
}
if(IS_POST){
/* 調(diào)用登錄接口登錄 */
$User = M('user') ;
//I方法接收頁面?zhèn)鬟f來的值
$num = I('num') ;
$password = I('password') ;
//查找user表中num等于$num的值
$datanum = $User->where(array('num'=>$num))->find();
//判斷$datanum的值
if ($datanum){
if (md5($password) === $datanum['password']) {
if ($datanum['status'] == 0) {
$this->error('用戶處于未審核狀態(tài),請(qǐng)聯(lián)系管理員');
}elseif($datanum['status'] == 2){
$this->error('用戶處于禁用狀態(tài),請(qǐng)聯(lián)系管理員');
}else{
$this->autoLogin($datanum) ; //調(diào)用私有方法自動(dòng)登錄.
$uid = $datanum['id'];
if($_SESSION['user_auth']['uid'] && $_SESSION['user_auth']['role'] == 'user'){
$this->success('登錄成功!', U('Index/index'));
}else{
$this->error('存儲(chǔ)錯(cuò)誤.');
}
}
}else{
$this->error('密碼填寫不正確,請(qǐng)重新填寫');
exit();
}
}else{
$this->error('用戶不存在,請(qǐng)注冊(cè)',U('signup'));
}
}
}
public function autoLogin($user){
/* 記錄登錄SESSION */
$auth = array(
'uid' => $user['id'],
'num' => $user['num'],
'role' => 'user' , //記錄用戶類型
);
session('user_auth', $auth);
session('user_auth_sign', data_auth_sign($auth));
}
/*
* 用戶注冊(cè)
*/
public function signup(){
if(is_user_login()){
$this->redirect('Index/index');
}
if(IS_GET){
//注冊(cè)頁面
$this->display();
}
if(IS_POST){
//判斷用戶
$data['num'] = I('num') ;
$User = M('user') ;
$datanum = $User->where($data)->find();
if ($datanum){
$this->success('您已經(jīng)注冊(cè)過,請(qǐng)直接登錄',U('signin'));
}else{
$data['password'] = md5(I('password'));
$data['name'] = I('name');
$data['email'] = I('email');
$data['addtime'] = time();
$uid = $User->add($data);
if($uid)
$this->success('注冊(cè)成功',U('signin')) ;
else
$this->error('注冊(cè)失敗') ;
}
}
}
public function logout(){
if(is_user_login()){
$User = M('user') ;
session('user_auth', null);
session('user_auth_sign', null);
session('[destroy]');
$this->success('登出成功!', U('signin'));
} else {
$this->redirect('signin');
}
}
//忘記密碼
public function wjpas(){
if(IS_GET){
$this->display();
}
if(IS_POST){
$User = M('user') ;
$num = I('num') ;
$data['password'] = md5(I('password')) ;
$email = I('email') ;
$datanum = $User->where(array('num'=>$num))->find();
if ($datanum){
if ($email === $datanum['email']) {
$User->where(array('num'=>$num))->save($data); // 根據(jù)條件更新記錄
$this->success('密碼修改成功',U('signin')) ;
}else{
$this->error('郵箱填寫不正確,請(qǐng)重新填寫');
exit();
}
}else{
$this->error('用戶不存在,請(qǐng)注冊(cè)',U('signup'));
}
}
}
}
?>
以上就是本文的全部內(nèi)容,希望對(duì)大家學(xué)習(xí)php程序設(shè)計(jì)有所幫助。
相關(guān)文章
php實(shí)現(xiàn)html標(biāo)簽閉合檢測與修復(fù)方法
這篇文章主要介紹了php實(shí)現(xiàn)html標(biāo)簽閉合檢測與修復(fù)方法,可實(shí)現(xiàn)針對(duì)html標(biāo)簽中結(jié)束標(biāo)簽的檢測與補(bǔ)全功能,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-07-07
PHP對(duì)京東聯(lián)盟CPS的API調(diào)用
這篇文章介紹了PHP調(diào)用京東聯(lián)盟API的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07
php常用字符串長度函數(shù)strlen()與mb_strlen()用法實(shí)例分析
這篇文章主要介紹了php常用字符串長度函數(shù)strlen()與mb_strlen()用法,結(jié)合實(shí)例形式分析了php字符串長度函數(shù)strlen()與mb_strlen()功能、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-06-06
PHP5.5安裝PHPRedis擴(kuò)展及連接測試方法
這篇文章主要介紹了PHP5.5安裝PHPRedis擴(kuò)展及連接測試方法,較為詳細(xì)的介紹了針對(duì)php5.5安裝PHPRedis擴(kuò)展的具體步驟與相關(guān)操作技巧,并給出了安裝后的連接測試示例,需要的朋友可以參考下2017-01-01
php ci 獲取表單中多個(gè)同名input元素值的代碼
這篇文章主要介紹了php ci 獲取表單中多個(gè)同名input元素值的代碼,需要的朋友可以參考下2016-03-03

