我不确定哪一个是最好的方法,所以我很想听听你的想法。
我们输入这个链接/url => www.myscript.com/clients.php?id=5
如果我试图打开它,我被重定向到www.myscript.com/login.php
,因为我没有登录,然后当我登录时,我没有被重定向到原始链接/url www.myscript.com/clients.php?id=5
,因为我想。
那么我应该在login.php中添加什么来实现这样的行为/工作?
请记住,URL可能是不同的,例如:
- www.myscript.com/clients.php?id=5
- www.myscript.com/orders.php?invoice=125
等等…
重定向到login.php
传递
urlencode($_SERVER["REQUEST_URI"])
作为参数,如下所示:
login.php?return=clients.php%3Fid%3D5
登录成功后,将页面重定向到
urldecode($_GET['return'])
你需要添加一个跟踪值到你的脚本,如果你把它添加到所有的页面(或你的网站的一个元素,出现在每个页面…?)
<?php
session_start(); // only if you are not already using sessions - if you are, you don't need this line
if (($_SERVER['REQUEST_URI'] != 'login.php') && ($_SERVER['REQUEST_URI'] != $_SESSION['oldURL'])) {
$_SESSION['oldURL'] = $_SERVER['REQUEST_URI'];
}
?>
然后在你想要重定向的登录页面中,你可以使用$_SESSION['oldURL']
if (login successfull)
header("Location: $storedURLvariable(www.myscript.com/orders.php?invoice=125)");
在login.php中输入如下内容:
$_SESSION['logged_in'] = true; // Wherever your user would actually be logged in.
现在,在你想要"仅在登录时可访问"的所有页面的开头,放入:
if (!$_SESION['logged_in'])
{
header("Location:/login.php");
exit();
}