最近手上一个小项目让我接触到PHP编程,简单的登陆功能已经OK。可是在实际使用的时候发现一个问题:用户A发送一个链接给用户B,B打开时页面提示登陆,可是登陆成功后,却跳转到了首页,而并不是A发送的链接。为了有更好的用户体验,B登陆成功后应该自动跳转到登陆前的链接。查了PHP帮助手册,利用$_SERVER全局变量可以实现这个功能。 $_SERVER是PHP的一个超全局变量,关于$_SERVER变量的详细解释可以参考:http://www.php.net/manual/zh/reserved.variables.server.php 具体实现方法为:在提示用户登录的同时,在session或者coo 在PHP编程中,实现用户登录后跳转到登录前页面是一项常见的需求,旨在提供更好的用户体验。当用户被提示登录时,系统需要记住他们试图访问的原始页面,以便在成功登录后能够返回。在这个过程中,我们可以利用PHP的$_SERVER全局变量,特别是其中的`REQUEST_URI`字段来获取当前请求的URL。 `$_SERVER`是一个超全局变量,它包含了服务器和执行环境的各种信息,例如HTTP头、脚本位置、请求方法等。在PHP文档中(参考:http://www.php.net/manual/zh/reserved.variables.server.php),你可以找到关于`$_SERVER`变量的详细说明。`$_SERVER['REQUEST_URI']`字段就保存了当前请求的统一资源标识符(URI),包括查询字符串。 实现登录后跳转的步骤如下: 1. **记录登录前的URL**:在用户未登录并尝试访问受保护页面时,检查`$_SESSION['login_ok']`是否存在。如果不存在,说明用户未登录,此时将`REQUEST_URI`的值存储在`$_SESSION['userurl']`中,并重定向到登录页面。 ```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>'; } ``` 2. **处理登录验证**:在`login.php`中,你应该进行账号密码的验证。如果验证通过,我们需要判断`$_SESSION['userurl']`是否已设置。如果已设置,说明有需要跳转的页面;如果没有设置,那么默认跳转到首页。 ```php session_start(); // 省略账号密码验证代码 if (isset ($_SESSION['userurl'])) { // 会话中有要跳转的页面 $url = $_SESSION['userurl']; } else { // 没有要跳转的页面,则转到首页 $url = "home.php"; } ``` 3. **执行跳转**:在验证成功后,使用HTML的`<meta>`标签实现页面的刷新和跳转。这里我们设置了0.5秒后跳转到 `$url`。 ```php echo "<meta http-equiv='refresh' content='0.5;url=$url'>"; ``` 以上方案能确保用户登录成功后被重定向到他们最初尝试访问的页面,而不是固定首页。这种方法提高了用户友好性,尤其是当用户分享链接时,接收者登录后可以直接看到分享的内容。 此外,你可能还会遇到其他与登录相关的功能,如使用PHP处理返回的数组数据、生成HTML静态页面、弹出提示框以及使用第三方库如Thinkphp5和layer进行页面跳转定制。这些都是提升用户体验的辅助手段,可以根据实际项目需求进行选择和实现。
- 粉丝: 6
- 资源: 951
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助