thinkajax返回頁面session信息(PHP)
Jul 06, 2016 pm 01:52 PM
1.在嘗試仿寫一個(gè)登錄程序。這個(gè)登錄表單在首頁,要求登錄成功后在首頁使用ajax無刷新返回用戶名信息(保存的session值)以及自動(dòng)隱藏表單?,F(xiàn)在通過js的確能返回用戶信息,但是只要刷新,用戶信息和表單就會(huì)恢復(fù)原狀了,怎么可以維持長久直到用戶點(diǎn)擊注銷或session消失后?
2.我通過F12的xhr模式能看到返回的用戶信息,通過jquery的append方法和remove()也確實(shí)可以實(shí)現(xiàn),不過問題是刷新后信息不存在和表單恢復(fù)原狀。
2.關(guān)鍵代碼:
(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>
回復(fù)內(nèi)容:
1.在嘗試仿寫一個(gè)登錄程序。這個(gè)登錄表單在首頁,要求登錄成功后在首頁使用ajax無刷新返回用戶名信息(保存的session值)以及自動(dòng)隱藏表單?,F(xiàn)在通過js的確能返回用戶信息,但是只要刷新,用戶信息和表單就會(huì)恢復(fù)原狀了,怎么可以維持長久直到用戶點(diǎn)擊注銷或session消失后?
2.我通過F12的xhr模式能看到返回的用戶信息,通過jquery的append方法和remove()也確實(shí)可以實(shí)現(xiàn),不過問題是刷新后信息不存在和表單恢復(fù)原狀。
2.關(guān)鍵代碼:
(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>
如果你用tp寫的在模板中用{$Think.session.username}這個(gè)賦值,通過js賦值刷新肯定沒有了
頁面搞個(gè)隱藏域放信息就好啦,session信息在頁面上只有你登錄成功以后會(huì)去請(qǐng)求,頁面刷新是不會(huì)觸發(fā)請(qǐng)求的
<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>
樓主這個(gè)問題,好像也不是很難嘛!把你存放用戶信息的表單弄成動(dòng)態(tài)的就可以了吧,具體如下:
<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>
你看看是不是這樣?

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

Um PHP -Datei -Uploads sicher zu verarbeiten, müssen Sie die Quelle und die Type und die Eingabe des Dateinamens und des Pfades überprüfen, Serverbeschr?nkungen festlegen und Mediendateien zweimal verarbeiten. 1. überprüfen Sie die Upload -Quelle, um CSRF durch Token zu verhindern, und erkennen Sie den realen MIME -Typ über die Finfo_file mithilfe der Whitelist -Steuerung. 2. Benennen Sie die Datei in eine zuf?llige Zeichenfolge um und bestimmen Sie die Erweiterung, um sie gem?? dem Erkennungstyp in einem Verzeichnis ohne Web zu speichern. 3. Die PHP -Konfiguration begrenzt die Hochladengr??e und das tempor?re Verzeichnis Nginx/Apache verbietet den Zugriff auf das Upload -Verzeichnis. 4. Die GD -Bibliothek stellt die Bilder neu, um potenzielle b?swillige Daten zu l?schen.

Inphp, variablenArepassedByValuebyDefault, BedeutungFunctionsSignmentsRecepeacopyofthedata, whilepassingyreferenceAllowsModificationStoeTheoriginalVariable.1.Weit PassingByValue, Changestothecopydonottheoriginal, Asshown, Asshown, $ b = $ -Pectheoriginal, Asshown, $ $ -Pectheoriginal, Asshown, $ organ

AgneeratorinphpiSamemory-effizientes WaytoiterateOverlargedatasetsByyieldingValueatimeinsteadofReturningThemallatonce.1.GeneratorsusetheyieldKeywordtoproduktenvaluesonDemand, ReducingMemoryUsage.2.TheyareusefulforfulforfulfordlingBiglopploups, Lesebiglochen, Leselungen, Lesebigs, Leselung, oder

Der Grund, warum der Header ('Ort: ...') in der AJAX -Anforderung ungültig ist, ist, dass der Browser nicht automatisch die Seitenleiter ausführt. Denn in der AJAX -Anforderung werden die vom Server zurückgegebenen Statuscode und Standort -Header -Informationen als Antwortdaten verarbeitet, anstatt das Sprungverhalten auszul?sen. L?sungen sind: 1. Return JSON -Daten in PHP und enthalten eine Sprung -URL; 2. überprüfen Sie das Umleitungsfeld im Front-End-Ajax-Rückruf und springen Sie manuell mit window.location.href; 3. Stellen Sie sicher, dass der PHP -Ausgang nur JSON ist, um das Analysen eines Ausfalls zu vermeiden. 4. Um mit Cross-Dom?nen-Problemen umzugehen, müssen Sie geeignete CORS-Header einstellen. 5. Um Cache -Interferenzen zu verhindern, k?nnen Sie einen Zeitstempel hinzufügen oder Cache einstellen: F.

Um eine Entführung der Sitzung in PHP zu verhindern, müssen die folgenden Ma?nahmen ergriffen werden: 1. Verwenden Sie HTTPS, um die übertragung zu verschlüsseln und die Sitzung zu setzen. Cookie_secure = 1 in php.ini; 2. Setzen Sie die Sicherheits -Cookie -Attribute, einschlie?lich Httponly, sicherer und samesit; 3.. CALL Session_regenerate_id (true) Wenn sich der Benutzer anmeldet oder die Berechtigungen ?ndern, um die Sitzung zu ?ndern; 4. Begrenzen Sie den Sitzungslebenszyklus, konfigurieren Sie die Aktivit?tszeit des Benutzers angemessen. 5. Verbot die SessionID der URL und setzen

Die Funktion urlencode () wird verwendet, um Strings in URL-sichere Formate zu codieren, in denen nicht alphanumerische Zeichen (au?er-, _ und.) Durch ein prozentuales Zeichen ersetzt werden, gefolgt von einer zweistelligen Hexadezimalzahl. Zum Beispiel werden Leerzeichen in Zeichen konvertiert, Ausrufezeichen in! Und chinesische Zeichen werden in ihr UTF-8-Codierungsformular umgewandelt. Bei der Verwendung sollten nur die Parameterwerte codiert werden, nicht die gesamte URL, um zu vermeiden, dass die URL -Struktur besch?digt wird. Für andere Teile der URL, wie z. B. Pfadsegmente, sollte die Funktion rawurlencode () verwendet werden, die den Raum in den Raum umwandelt. Bei der Verarbeitung von Array -Parametern k?nnen Sie http_build_query () verwenden, um urlencode () automatisch für jeden Wert zu codieren oder manuell aufzurufen, um eine sichere Datenübertragung sicherzustellen. Nur

In PHP k?nnen Sie quadratische Klammern oder lockige Klammern verwenden, um Zeichenfolgenspezifikationsspezifische Indexzeichen zu erhalten, aber quadratische Klammern werden empfohlen. Der Index startet von 0 und der Zugriff au?erhalb des Bereichs gibt einen Nullwert zurück und kann keinen Wert zugewiesen; MB_SUBSTR ist erforderlich, um Multi-Byte-Zeichen zu verarbeiten. Zum Beispiel: $ str = "Hallo"; echo $ str [0]; Ausgabe H; und chinesische Zeichen wie Mb_Substr ($ str, 1,1) müssen das richtige Ergebnis erzielen. In den tats?chlichen Anwendungen sollte die L?nge der Zeichenfolge vor dem Schleifen überprüft werden, dynamische Zeichenfolgen müssen für die Gültigkeit verifiziert werden, und mehrsprachige Projekte empfehlen, Multi-Byte-Sicherheitsfunktionen einheitlich zu verwenden.

Sie k?nnen substr () oder mb_substr () verwenden, um die ersten N -Zeichen in PHP zu erhalten. Die spezifischen Schritte sind wie folgt: 1. Verwenden Sie Substr ($ String, 0, n), um die ersten N -Zeichen abzufangen, was für ASCII -Zeichen geeignet ist und einfach und effizient ist; 2. Bei der Verarbeitung von Multi-Byte-Zeichen (z. B. Chinesisch), mb_substr ($ string, 0, n, 'utf-8') und sicherstellen, dass die Mbstring-Erweiterung aktiviert ist; 3. Wenn die Zeichenfolge HTML- oder Whitespace -Zeichen enth?lt, sollten Sie zun?chst Strip_Tags () verwenden, um die Tags zu entfernen und die R?ume zu reinigen (), um die R?ume zu reinigen, und diese dann abfangen, um sicherzustellen, dass die Ergebnisse sauber sind.
