Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将用户发送回引用页面_Php_Redirect - Fatal编程技术网

Php 将用户发送回引用页面

Php 将用户发送回引用页面,php,redirect,Php,Redirect,在用户成功登录后,我正在努力设置重定向 登录页面应将用户重定向到成功登录后被拒绝访问的页面 例如,如果用户在登录(无会话)之前单击“我的帐户”,那么他们将成功重定向到登录页面,但一旦登录,我如何将他们发送回“我的帐户”页面 我尝试的方法包括$\u会话['HTTP\u REFERER] 任何帮助都将不胜感激。使用是危险的,因为如果用户在尝试登录时收到错误(例如错误的密码),则推荐人将处于同一登录页面。在将用户重定向到登录页面之前,您应该将返回URL存储在会话变量中,然后在用户成功登录后,将其重定向

在用户成功登录后,我正在努力设置重定向

登录页面应将用户重定向到成功登录后被拒绝访问的页面

例如,如果用户在登录(无会话)之前单击“我的帐户”,那么他们将成功重定向到登录页面,但一旦登录,我如何将他们发送回“我的帐户”页面

我尝试的方法包括
$\u会话['HTTP\u REFERER]

任何帮助都将不胜感激。

使用是危险的,因为如果用户在尝试登录时收到错误(例如错误的密码),则推荐人将处于同一登录页面。在将用户重定向到登录页面之前,您应该将返回URL存储在会话变量中,然后在用户成功登录后,将其重定向到存储的返回URL

例如,假设您需要保护
page.php
,您可以在文件的开头有如下内容:

if (empty($_SESSION['user'])) {
    $_SESSION['backURL'] = $_SERVER['REQUEST_URI'];
    header('Location: login.php');
    exit;
}
然后,在用户成功登录后,您可以填充
$\u SESSION['user']
变量,然后重定向到您存储的URL,然后再将其发送到登录页面(或者如果由于任何原因您没有存储任何返回URL,则重定向到站点的根):

试试这个:

<?php
  header("Location: " . $_SERVER["HTTP_REFERER"]);
?>

可以,但请注意:


在发送自定义标题之前,您不能输出(
echo
print\r
,etc)任何内容。

让执行重定向的页面设置一个会话变量,该变量是该页面的URL:

session_start();
if (!$logged_id)
{
    $_SESSION['redirect_url'] = $_SERVER['PHP_SELF']; 
    header('Location: login.php');
    exit;
}
成功登录后,将其重定向到该URL:

session_start();

/* Login code goes here */

$redirect_url = (isset($_SESSION['redirect_url'])) ? $_SESSION['redirect_url'] : '/';
unset($_SESSION['redirect_url']);
header("Location: $redirect_url", true. 303);
exit;

您应该记住变量中上次访问的页面,如
$\u SESSION[“last\u page”]
(不包括登录页面)。用户成功登录后,获取变量的值并将用户重定向到其以前的位置

你不能使用推荐人。例如,若用户第一次尝试登录失败,在第二次尝试中,他的推荐人将进入登录页面


另一种方法是使用ajax对用户进行身份验证,而无需单独的登录页面。若登录成功,您只需使用javascript刷新页面即可

在上面尝试过,但不起作用。登录后让我保持在同一页面。会话成功创建,这意味着用户名和密码正确。此方法有效,感谢所有给出答案的人的帮助。再次感谢您,如果您测试$_会话['backURL',RaduIt会更好;因为如果有人给登录页面添加书签并直接打开它,就会出现错误。找不到页面之类的内容…我知道。OP特别询问了“将用户发送回引用页面”的问题,而代码片段就是这样做的,这并不意味着OP想要这样做。
session_start();
if (!$logged_id)
{
    $_SESSION['redirect_url'] = $_SERVER['PHP_SELF']; 
    header('Location: login.php');
    exit;
}
session_start();

/* Login code goes here */

$redirect_url = (isset($_SESSION['redirect_url'])) ? $_SESSION['redirect_url'] : '/';
unset($_SESSION['redirect_url']);
header("Location: $redirect_url", true. 303);
exit;