当前位置: 首页 > news >正文

PHP用户登录后跳转回上一访问页面的实现思路及代码

项目需求

访问网站页面时,有的页面需要授权才能访问,这时候就会要求用户登录,跳转到登录页面login.php,怎么实现登录后返回到刚才访问的页面。

解决思路1:

在跳转到登录页面之前要将当前访问页面的url保存到cookie里面,登录验证授权通过后,从cookie中取出这个url值,跳转到该url指定的页面。

具体实现方法:

在提示用户登录的同时,在session或者cookie中记录下请求页面的URL;登录验证成功后在跳转回该URL。
checklogin.php
代码如下:

session_start();

if (!isset ($_SESSION['login_ok']))
{
echo "<script language=javascript>alert ('要访问的页面需要先登录。');</script>";
$_SESSION['userurl'] = $_SERVER['REQUEST_URI'];
echo '<script language=javascript>window.location.href="login.php"</script>';
}

login.php
代码如下:

session_start();

//此处省略了账号密码验证代码,验证OK再执行下面代码

if (isset ($_SESSION['userurl']))
{
//会话中有要跳转的页面
$url = $_SESSION['userurl'];
}
else
{
//没有要跳转的页面,则转到首页
$url = "home.php";
}

//0.5s后跳转
echo "<meta http-equiv="refresh" content="0.5;url=$url">";

解决思路2:

除了存成cookie的形式,相信大家也看到了很多大型网站直接采用GET的形式获得,DZ的登陆机制就是这样。
这种思路具体是这样的:
在跳转到登录页面前要将访客访问的页面的url作为参数传递过去,登录验证后,授予访问权限之后跳转到该url指定的页面。
比如登录前的url为:http://www.xxx.com/member/authpage.html 当访客访问时,点击无权限,跳转到登录页面的地址就为login.php?redirect_url=http://www.xxx.com/member/authpage.html,这样在登录时就可以用GET方式获取该参数 http://www.xxx.com/member/authpage.html,登录验证成功后跳转到authpage.html 这个页面就可以了。

相关文章:

  • ckeditor 的简单调用
  • centos下的中文分词coreseek-4.1的编译安装与基本配置
  • linux下php支持sphinx的扩展安装
  • sphinx增量索引和主索引来实现索引的实时更新
  • 一个可用的coreseek以及sphinx的csft.conf配置
  • PHP获取用户真实 IP , 淘宝IP接口获得ip地理位置
  • PHP攻击网站防御代码-以及攻击代码反译
  • coreseek及sphinx的.conf典型简单配置
  • PHP 对sphinx的api调用
  • Sphinx配置文件详解
  • 单独编译安装php的mysqli,pdo_mysql,mysqlnd扩展
  • PDO方式操作MYSQL的使用
  • redis 安装与配置
  • mysql source的导入小记
  • PDO连接数据库报错:SQLSTATE[HY000] [2002] No such file or directory
  • 自己简单写的 事件订阅机制
  • @jsonView过滤属性
  • avalon2.2的VM生成过程
  • axios 和 cookie 的那些事
  • Babel配置的不完全指南
  • IOS评论框不贴底(ios12新bug)
  • spring boot 整合mybatis 无法输出sql的问题
  • storm drpc实例
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • VUE es6技巧写法(持续更新中~~~)
  • 程序员最讨厌的9句话,你可有补充?
  • 关于springcloud Gateway中的限流
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 排序算法学习笔记
  • 想写好前端,先练好内功
  • 学习Vue.js的五个小例子
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 你对linux中grep命令知道多少?
  • Prometheus VS InfluxDB
  • 阿里云ACE认证学习知识点梳理
  • 组复制官方翻译九、Group Replication Technical Details
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • (6)设计一个TimeMap
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (ZT)薛涌:谈贫说富
  • (六)vue-router+UI组件库
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)Linux下编译安装log4cxx
  • (转)Scala的“=”符号简介
  • (转)为C# Windows服务添加安装程序
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .net 生成二级域名
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)