成功登录后PHP重定向到原始URL


PHP redirecting to original URL after successful login

我不确定哪一个是最好的方法,所以我很想听听你的想法。

我们输入这个链接/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();
}