1.在嘗試仿寫一個登錄程序。這個登錄表單在首頁,要求登錄成功后在首頁使用ajax無刷新返回用戶名信息(保存的session值)以及自動隱藏表單。現(xiàn)在通過js的確能返回用戶信息,但是只要刷新,用戶信息和表單就會恢復原狀了,怎么可以維持長久直到用戶點擊注銷或session消失后?
2.我通過f12的xhr模式能看到返回的用戶信息,通過jquery的append方法和remove()也確實可以實現(xiàn),不過問題是刷新后信息不存在和表單恢復原狀。
2.關鍵代碼:
(1)indexcontroller.class.php:
public function checkUser(){ //接收值 $userName=$_POST['username']; $userPass=$_POST['userpass']; //空值檢測->function if(!trim($userName)){ return show(0,'用戶名不能為空'); } if(!trim($userPass)){ return show(0,'密碼不能為空'); } //對用戶密碼真實性進行檢驗->Model $res=D("Stuser")->getUser($userName); if(!$res['username']){ return show(0,'用戶名不存在'); } //密碼處理->function if($res['userpass']!=getMd5Pass($userPass)){ return show(0,'密碼不正確'); } //echo $res['username']; //$_SESSION('username',$res); //設置session $_SESSION['username']=$res; //dump($username) ; //var_dump($username); return show(1,'登錄成功',$this->getSessionNames()); } //判斷session情況->index public function getSessionNames(){ if($_SESSION['username']['username']){ $username = $_SESSION['username']['username']; //$a=$this->ajaxReturn($username); //$this->assign('username',$username); return $username; } }請輸入代碼
(2)function.php
立即學習“PHP免費學習筆記(深入)”;
function show($status,$message,$data=array()){ $result=array( 'status' => $status, 'message' => $message, 'data' => $data, ); //JSON編碼數(shù)據(jù) exit(json_encode($result)); }請輸入代碼
(3)login.js
var login = { checkUser : function() { //獲取登錄頁面中的用戶名、密碼 var userName=$('input[name="username"]').val(); var userPass=$('input[name="userpass"]').val(); if(!userName) { dialog.error("用戶名不能為空"); } if(!userPass) { dialog.error("密碼不能為空"); } var url="/stfjzd-12/index.php/Home/Index/checkUser"; var data={'username':userName,'userpass':userPass}; //執(zhí)行異步請求 $.post(url,data,function(result){ if(result.status==0) { return dialog.error(result.message); } if(result.status==1) { if(data!=""){ //alert(data.username); $('#index_form2').remove(); $('#test').append(data.username); } return dialog.success(result.message,"/stfjzd-12/index.php/Home/Index/checkUser"); //alert(result.data['username']) ; } },'JSON'); } }請輸入代碼
1.在嘗試仿寫一個登錄程序。這個登錄表單在首頁,要求登錄成功后在首頁使用ajax無刷新返回用戶名信息(保存的session值)以及自動隱藏表單?,F(xiàn)在通過js的確能返回用戶信息,但是只要刷新,用戶信息和表單就會恢復原狀了,怎么可以維持長久直到用戶點擊注銷或session消失后?
2.我通過f12的xhr模式能看到返回的用戶信息,通過jquery的append方法和remove()也確實可以實現(xiàn),不過問題是刷新后信息不存在和表單恢復原狀。
2.關鍵代碼:
(1)indexcontroller.class.php:
public function checkUser(){ //接收值 $userName=$_POST['username']; $userPass=$_POST['userpass']; //空值檢測->function if(!trim($userName)){ return show(0,'用戶名不能為空'); } if(!trim($userPass)){ return show(0,'密碼不能為空'); } //對用戶密碼真實性進行檢驗->Model $res=D("Stuser")->getUser($userName); if(!$res['username']){ return show(0,'用戶名不存在'); } //密碼處理->function if($res['userpass']!=getMd5Pass($userPass)){ return show(0,'密碼不正確'); } //echo $res['username']; //$_SESSION('username',$res); //設置session $_SESSION['username']=$res; //dump($username) ; //var_dump($username); return show(1,'登錄成功',$this->getSessionNames()); } //判斷session情況->index public function getSessionNames(){ if($_SESSION['username']['username']){ $username = $_SESSION['username']['username']; //$a=$this->ajaxReturn($username); //$this->assign('username',$username); return $username; } }請輸入代碼
(2)function.php
立即學習“PHP免費學習筆記(深入)”;
function show($status,$message,$data=array()){ $result=array( 'status' => $status, 'message' => $message, 'data' => $data, ); //JSON編碼數(shù)據(jù) exit(json_encode($result)); }請輸入代碼
(3)login.js
var login = { checkUser : function() { //獲取登錄頁面中的用戶名、密碼 var userName=$('input[name="username"]').val(); var userPass=$('input[name="userpass"]').val(); if(!userName) { dialog.error("用戶名不能為空"); } if(!userPass) { dialog.error("密碼不能為空"); } var url="/stfjzd-12/index.php/Home/Index/checkUser"; var data={'username':userName,'userpass':userPass}; //執(zhí)行異步請求 $.post(url,data,function(result){ if(result.status==0) { return dialog.error(result.message); } if(result.status==1) { if(data!=""){ //alert(data.username); $('#index_form2').remove(); $('#test').append(data.username); } return dialog.success(result.message,"/stfjzd-12/index.php/Home/Index/checkUser"); //alert(result.data['username']) ; } },'JSON'); } }請輸入代碼
如果你用tp寫的在模板中用{$Think.session.username}這個賦值,通過js賦值刷新肯定沒有了
頁面搞個隱藏域放信息就好啦,session信息在頁面上只有你登錄成功以后會去請求,頁面刷新是不會觸發(fā)請求的
public function index(){ //你顯示頁面的函數(shù) $user=$this->getSessionNames(); $this->assing('user',$user); ... }
//index.html <script> $(function(){ var username="{{$user}}"; if(username != ""){ $('#index_form2').remove(); $('#test').append(username); } }) </script>
//login.js
樓主這個問題,好像也不是很難嘛!把你存放用戶信息的表單弄成動態(tài)的就可以了吧,具體如下:
//這個是php的處理代碼塊 if($this->chen_user()) { //這個是驗證是否登陸成功 $_SESSION['username'] = $username; //這里把用戶信息存入session $_SESSION['sex] = $sex; } //這個是前端顯示的 <?php if($_SESSION['username']) { ?> 如果session中有username的值就輸出用戶信息 沒有就不輸出 <td>姓名</td><td><?php echo $_SESSION['username'];?></td> <?php } ?>
你看看是不是這樣?
PHP怎么學習?PHP怎么入門?PHP在哪學?PHP怎么學才快?不用擔心,這里為大家提供了PHP速學教程(入門到精通),有需要的小伙伴保存下載就能學習啦!
Copyright 2014-2025 http://m.miracleart.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號