例如,
第1步:
我在未登录的情况下浏览页面,登录前的最后一个页面是beforeLogin.php
第2步:
现在我的问题是,当我登录时,我会重定向到index.php页面。相反,我应该被重定向到我浏览过的最后一个页面。
也就是说,上面的示例应该重定向到beforeLogin.php
应该如何做到这一点。
任何帮助都是值得欣赏的。
提前感谢
发布于 2010-03-28 15:08:27
您需要一种方法来跟踪访问过的web页面,以便可以向后引用用户浏览到的最后一个页面。
当我想到跨多个页面跟踪用户会话时,我和其他所有PHP程序员一样,想到了使用sessions。
一种可能的方法是将访问的链接存储到会话变量中,然后当用户到达login.php
页面(要登录的页面)时,提供会话变量给出的到$url
的header
重定向。
注意:以下代码片段尚未经过测试或编译。
您可以将此代码粘贴到您网站上的所有页面中:
<?php
session_start(); // starts the session
$_SESSION['url'] = $_SERVER['REQUEST_URI']; // i.e. "about.php"
它利用$_SERVER
变量返回使用$_SERVER['REQUEST_URI']
访问的当前页面的URI
然后查看登录页面以帮助进一步演示:
<?php
session_start(); // needed for sessions.
if(isset($_SESSION['url']))
$url = $_SESSION['url']; // holds url for last page visited.
else
$url = "index.php"; // default page for
header("Location: http://example.com/$url"); // perform correct redirect.
发布于 2010-03-28 16:04:12
到目前为止,最简单的解决方案是:
<input type="hidden" name="redirurl" value="<? echo $_SERVER['HTTP_REFERER']; ?>" />
然后在他们登录后重定向到该地址。
但是,只有在每个页面上都有一个登录框时,这才是好的。我个人这样做,我发现它工作得很好。
发布于 2010-03-28 15:23:46
您可以使登录表单操作指向当前页面。这很简单明了
比方说,你的页面看起来像
<?
include "auth.php"; // you need it anyway, as you want to control user's auth
//the rest of the page;
?>
<form method="POST">
login form
</form>
<?
//the rest of the page;
if (!empty($_SESSION['user_id'])) echo "Welcome registered user!";
?>
auth.php会负责登录检查,然后重定向到当前页面并不是什么大问题
<?
if (isset($_REQUEST[session_name()])) session_start();
if (isset($_POST['auth_name'])) {
//password checking
if (pass ok) {
session_start();
$_SESSION['user_id'] = $row['id'];
}
header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
exit;
}
像这样的东西不需要额外的会话。
https://stackoverflow.com/questions/2532141
复制相似问题