最近在搞最原始的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头带错误信息给前端(野路子操作)相关推荐

  1. 推荐系统实践读书笔记-05利用上下文信息

    推荐系统实践读书笔记-05利用上下文信息 本章之前提到的推荐系统算法主要集中研究了如何联系用户兴趣和物品,将最符合用户兴趣的物品推荐给用户,但这些算法都忽略了一点,就是用户所处的上下文(context ...

  2. 头歌-信息安全技术-用Python实现自己的区块链、支持以太坊的云笔记服务器端开发、编写并测试用于保存云笔记的智能合约、支持以太坊的云笔记小程序开发基础

    头歌-信息安全技术-用Python实现自己的区块链.支持以太坊的云笔记服务器端开发.编写并测试用于保存云笔记的智能合约.支持以太坊的云笔记小程序开发基础 一.用Python实现自己的区块链 1.任务描 ...

  3. 推荐系统实践读书笔记-04利用用户标签数据

    推荐系统实践读书笔记-04利用用户标签数据 推荐系统的目的是联系用户的兴趣和物品,这种联系需要依赖不同的媒介.GroupLens在一篇文章中表示目前流行的推荐系统基本上通过3种方式联系用户兴趣和物品. ...

  4. 头歌-信息安全技术-【实训10】HTML信息隐藏、动态分析技术

    头歌-信息安全技术-[实训10]HTML信息隐藏.动态分析技术 一.[实训10]HTML信息隐藏 1.任务要求 (1)步骤1 (2)步骤2 (3)步骤3:选择隐藏方法 (4)步骤4:对比隐藏效果 2. ...

  5. 推荐系统实践读书笔记-02利用用户行为数据

    推荐系统实践读书笔记-02利用用户行为数据 为了让推荐结果符合用户口味,我们需要深入了解用户.如何才能了解一个人呢?<论语·公冶长>中说"听其言,观其行",也就是说可以 ...

  6. oracle事务数统计,【学习笔记】Oracle数据库收集统计信息的两种方法介绍案例

    天萃荷净 分享一篇关于Oracle数据库收集统计信息的办法,Oracle DBMS_STATS与Oracle analyze使用方法案例 今天群里面讨论DBMS_STATS和analyze,这里进行了 ...

  7. 推荐系统实践读书笔记-06利用社交网络数据

    推荐系统实践读书笔记-06利用社交网络数据 自从搜索引擎谷歌诞生后,大家都在讨论互联网的下一个金矿是什么.现在,几乎所有的人都认为那就是社交网络.根据尼尔森2010年的报告,用户在互联网上22%的时间 ...

  8. 2021-08-31《内网安全攻防》学习笔记,第二章-域内信息收集(转自PowerLiu)

    <内网安全攻防>学习笔记,第二章-域内信息收集 2020-07-212020-07-21 15:08:47阅读 1.1K0 2.1 内网信息搜集概述 当渗透测试人员进入内网后,面对的是一片 ...

  9. php利用P3P头实现跨域设置cookie

    在开发中,我们碰到的跨域主要还是纠结在IE,页面中的IFRAME或者FRAME或者JS跨域的时候,IE有安全策略限制页面不带cookie,但是如果我们加上P3P,就没有这策略的限制.这也是P3P来突破 ...

最新文章

  1. cuda 安装_win10+VS 2017 安装 CUDA(Visual Studio Integration失败)
  2. Web Deployment Projects with Visual Studio 2005
  3. RedHat7.0 设置weblogic开机自启动
  4. Data-Hack SQL注入检测
  5. [Eclipse插件] Eclipse设置Tab键为空格(ctrl+shirt+f格式化生效)!
  6. Swift - 多线程实现方式(3) - Grand Central Dispatch(GCD)
  7. iframe跨域与session失效问题
  8. m1电脑推荐使用Google Chrome浏览器
  9. LaTeX技巧001:ctex下使用其他中文字体
  10. Centos7 下配置mail使用163邮箱发送邮件
  11. 永恒python+6_永恒中心 – Eternal Center
  12. 这些东西适合做什么?
  13. 警察蜀黍,这有个装正经又不正经的App!
  14. Java基础----Java语言简介
  15. 浅谈SystemInit时钟系统
  16. 2月,写在转行7年之际
  17. 抓娃娃营销工具 uniapp
  18. android 获取u盘名字_Android 获取U盘的卷标(支持中文卷标)
  19. SQLIntegrityConstraintViolationException: Duplicate entry 'xxx' for key 'yyyzzz'异常解决
  20. 幸运的是,我的老师很严厉~

热门文章

  1. 重新创建Activity
  2. Visual Studio 2012 简体中文 旗舰正式版 ISO 下载
  3. cocos2d精灵教程(三篇)
  4. Java数据库接口JDBC入门基础讲座_JDBC基础教程之CallableStatement
  5. 从平台架构到大屏可视化,一文读懂金融服务行业的数据分析
  6. 企业数据化应用的第一步,你需要报表管理平台
  7. 什么C++程序员,什么Java程序员
  8. 人生最重要的十个健康伴侣
  9. C++字符串完全指南(2) - 各种字符串类- CRT类
  10. Widnwos 2000 命令集合