日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

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

發布時間:2025/3/15 php 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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头带错误信息给前端(野路子操作)的全部內容,希望文章能夠幫你解決所遇到的問題。

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