日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

      歡迎訪問 生活随笔!

      生活随笔

      當前位置: 首頁 >

      PHPJavaScript笔记-后端利用Refresh头带错误信息给前端(野路子操作)

      發布時間:2025/3/15 45 豆豆
      生活随笔 收集整理的這篇文章主要介紹了 PHPJavaScript笔记-后端利用Refresh头带错误信息给前端(野路子操作) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

      最近在搞最原始的PHP,發現前后端分離的項目,的確比用模板引擎的項目好。至少在用戶體驗上好太多(不看占用內存方面)。估計以后還是要用vue開發前端,做前后端分離。

      這里后端的源碼是這樣的邏輯,提交表單后走的是這一串代碼:

      $useName = trim($_POST["userName"]); $password = trim($_POST["password"]); $captcha = trim($_POST["captcha"]);if(empty($useName) || empty($password)){$this->error("用戶名或密碼不能為空", "", "", "login"); } if(empty($captcha)){$this->error("驗證碼不能為空", "", "", "login"); } if(Captcha::checkCaptcha($captcha)){$this->error("驗證碼錯誤", "", "", "login"); }

      然后對應的error函數是這樣的:

      protected function error($msg, $platform, $controller, $action, $time = 3){if(!$platform){$platform = P;}if(!$controller){$controller = C;}if(!$action){$action = A;}echo $msg;$refresh = "Refresh:" . $time . ";url=" . URL . "index.php?p=" . $platform . "&c=" . $controller . "&a=" . $action;header($refresh);exit; }

      如下不輸入任何點擊登錄后:

      ?會先進入這個頁面:

      然后又回到登錄頁面了,這太拉跨了。

      用Fiddler抓下看看:

      第一個包:

      ?

      可以從Refresh中看到為3,代表3秒后進入后面那個url,然后body里面的字符串被打印到瀏覽器上。整個架構設計就是用的php加smarty模板引擎,沒有使用前后端分離。

      修改邏輯:

      這里把refresh改成0,然后url那里加個msg=用戶名或密碼不能為空。前端用個js,把這個msg獲取到,然后放到開頭提示用戶,只能這樣了。搞個野路子了。

      php修改如下:

      protected function error($msg, $platform, $controller, $action, $time = 0){if(!$platform){$platform = P;}if(!$controller){$controller = C;}if(!$action){$action = A;}$encodingMsg = urlencode($msg);$refresh = "Refresh:" . $time . ";url=" . URL . "index.php?p=" . $platform . "&c=" . $controller . "&a=" . $action . "&msg=" . $encodingMsg;header($refresh);exit; }

      前端

      增加js代碼:

      window.onload = function (){let msg = decodeURI(getQueryVariable("msg"));if(msg != "false"){let mainDiv = document.getElementById("mainDiv");mainDiv.insertAdjacentHTML("afterbegin", "<div id='alter' class='alert border rounded-3' role='alert'>" + msg + "</div>");} }

      其中mainDiv是body后面的第一個div

      還是這個頁面:

      點擊登錄后:

      ?這樣的話,用戶體驗會稍微高一點點。

      創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

      總結

      以上是生活随笔為你收集整理的PHPJavaScript笔记-后端利用Refresh头带错误信息给前端(野路子操作)的全部內容,希望文章能夠幫你解決所遇到的問題。

      如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。