thinkajax returns page session information (PHP)
Jul 06, 2016 pm 01:52 PM
1. Trying to imitate a login program. This login form is on the home page. After successful login, it is required to use ajax on the home page to return the user name information (saved session value) without refreshing and automatically hide the form. Now it is true that user information can be returned through js, but as long as it is refreshed, the user information and form will be restored to their original state. How can it be maintained for a long time until the user clicks to log out or the session disappears?
2. I can see the returned user information through the xhr mode of F12. It can also be achieved through the append method and remove() of jquery. However, the problem is that the information does not exist and the form returns to its original state after refreshing.
2. Key code:
(1) IndexController.class.php:
<code>public function checkUser(){ //接收值 $userName=$_POST['username']; $userPass=$_POST['userpass']; //空值檢測(cè)->function if(!trim($userName)){ return show(0,'用戶名不能為空'); } if(!trim($userPass)){ return show(0,'密碼不能為空'); } //對(duì)用戶密碼真實(shí)性進(jìn)行檢驗(yàn)->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); //設(shè)置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; } }請(qǐng)輸入代碼</code>
(2)function.php
<code>function show($status,$message,$data=array()){ $result=array( 'status' => $status, 'message' => $message, 'data' => $data, ); //JSON編碼數(shù)據(jù) exit(json_encode($result)); }請(qǐng)輸入代碼</code>
(3) login.js
<code>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í)行異步請(qǐng)求 $.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'); } }請(qǐng)輸入代碼</code>
Reply content:
1. Trying to imitate a login program. This login form is on the home page. After successful login, it is required to use ajax on the home page to return the user name information (saved session value) without refreshing and automatically hide the form. Now it is true that user information can be returned through js, but as long as it is refreshed, the user information and form will be restored to their original state. How can it be maintained for a long time until the user clicks to log out or the session disappears?
2. I can see the returned user information through the xhr mode of F12. It can also be achieved through the append method and remove() of jquery. However, the problem is that the information does not exist and the form returns to its original state after refreshing.
2. Key code:
(1) IndexController.class.php:
<code>public function checkUser(){ //接收值 $userName=$_POST['username']; $userPass=$_POST['userpass']; //空值檢測(cè)->function if(!trim($userName)){ return show(0,'用戶名不能為空'); } if(!trim($userPass)){ return show(0,'密碼不能為空'); } //對(duì)用戶密碼真實(shí)性進(jìn)行檢驗(yàn)->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); //設(shè)置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; } }請(qǐng)輸入代碼</code>
(2)function.php
<code>function show($status,$message,$data=array()){ $result=array( 'status' => $status, 'message' => $message, 'data' => $data, ); //JSON編碼數(shù)據(jù) exit(json_encode($result)); }請(qǐng)輸入代碼</code>
(3) login.js
<code>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í)行異步請(qǐng)求 $.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'); } }請(qǐng)輸入代碼</code>
If you write it in TP and use {$Think.session.username} in the template, the refresh through js assignment will definitely be gone
Just create a hidden field on the page to put the information. The session information on the page will only be requested after you log in successfully. Refreshing the page will not trigger the request
<code>public function index(){ //你顯示頁面的函數(shù) $user=$this->getSessionNames(); $this->assing('user',$user); ... }</code>
<code>//index.html <script> $(function(){ var username="{{$user}}"; if(username != ""){ $('#index_form2').remove(); $('#test').append(username); } }) </script></code>
<code> //login.js</code>
The poster’s question doesn’t seem to be difficult at all! Just make the form where you store user information dynamic, as follows:
<code>//這個(gè)是php的處理代碼塊 if($this->chen_user()) { //這個(gè)是驗(yàn)證是否登陸成功 $_SESSION['username'] = $username; //這里把用戶信息存入session $_SESSION['sex] = $sex; } //這個(gè)是前端顯示的 <?php if($_SESSION['username']) { ?> 如果session中有username的值就輸出用戶信息 沒有就不輸出 <td>姓名</td><td><?php echo $_SESSION['username'];?></td> <?php } ?></code>
Do you think this is the case?

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

TostaycurrentwithPHPdevelopmentsandbestpractices,followkeynewssourceslikePHP.netandPHPWeekly,engagewithcommunitiesonforumsandconferences,keeptoolingupdatedandgraduallyadoptnewfeatures,andreadorcontributetoopensourceprojects.First,followreliablesource

PHPbecamepopularforwebdevelopmentduetoitseaseoflearning,seamlessintegrationwithHTML,widespreadhostingsupport,andalargeecosystemincludingframeworkslikeLaravelandCMSplatformslikeWordPress.Itexcelsinhandlingformsubmissions,managingusersessions,interacti

TosettherighttimezoneinPHP,usedate_default_timezone_set()functionatthestartofyourscriptwithavalididentifiersuchas'America/New_York'.1.Usedate_default_timezone_set()beforeanydate/timefunctions.2.Alternatively,configurethephp.inifilebysettingdate.timez

TovalidateuserinputinPHP,usebuilt-invalidationfunctionslikefilter_var()andfilter_input(),applyregularexpressionsforcustomformatssuchasusernamesorphonenumbers,checkdatatypesfornumericvalueslikeageorprice,setlengthlimitsandtrimwhitespacetopreventlayout

ThePhpfunctionSerialize () andunserialize () AreusedtoconvertcomplexdaTastructdestoresintostoraSandaBackagain.1.Serialize () c OnvertsdatalikecarraysorobjectsraystringcontainingTypeandstructureinformation.2.unserialize () Reconstruct theoriginalatataprom

You can embed PHP code into HTML files, but make sure that the file has an extension of .php so that the server can parse it correctly. Use standard tags to wrap PHP code, insert dynamic content anywhere in HTML. In addition, you can switch PHP and HTML multiple times in the same file to realize dynamic functions such as conditional rendering. Be sure to pay attention to the server configuration and syntax correctness to avoid problems caused by short labels, quotation mark errors or omitted end labels.

The key to writing clean and easy-to-maintain PHP code lies in clear naming, following standards, reasonable structure, making good use of comments and testability. 1. Use clear variables, functions and class names, such as $userData and calculateTotalPrice(); 2. Follow the PSR-12 standard unified code style; 3. Split the code structure according to responsibilities, and organize it using MVC or Laravel-style catalogs; 4. Avoid noodles-style code and split the logic into small functions with a single responsibility; 5. Add comments at key points and write interface documents to clarify parameters, return values ??and exceptions; 6. Improve testability, adopt dependency injection, reduce global state and static methods. These practices improve code quality, collaboration efficiency and post-maintenance ease.

Yes,youcanrunSQLqueriesusingPHP,andtheprocessinvolveschoosingadatabaseextension,connectingtothedatabase,executingqueriessafely,andclosingconnectionswhendone.Todothis,firstchoosebetweenMySQLiorPDO,withPDObeingmoreflexibleduetosupportingmultipledatabas
