Php 重定向到最后一个被访问的页面
我无法为我尝试过的所有方法找到正确的解决方案 成功登录后,用户在准确时间内未使用其帐户,必须重新连接 我想要的是,当用户重新连接时,它会直接重定向到他查阅的最后一页,而不是索引页 这是我的代码: 认证形式:Php 重定向到最后一个被访问的页面,php,redirect,Php,Redirect,我无法为我尝试过的所有方法找到正确的解决方案 成功登录后,用户在准确时间内未使用其帐户,必须重新连接 我想要的是,当用户重新连接时,它会直接重定向到他查阅的最后一页,而不是索引页 这是我的代码: 认证形式: <form action="login.php" method="POST"> //input login and password </form> <?php @session_start();
<form action="login.php" method="POST">
//input login and password
</form>
<?php
@session_start();
if ($_POST['url'] == '')
{
$url = "index.php";
}
else
{
$url = $_POST['url'];
}
$login = $_POST['login'];
$password = $_POST['password'];
$password_hash = hash('sha256', $password);
try
{
$connexion = new PDO('mysql:host=localhost;dbname=data1', 'data1', 'password');
$sql_auth = "
SELECT *
FROM users_list
WHERE
login= :login AND password= :password
LIMIT 1
";
$req_login = $connexion -> prepare("$sql_auth");
$req_login -> bindParam(":login", $login, PDO::PARAM_STR);
$req_login -> bindParam(":password", $password_hash, PDO::PARAM_STR);
$req_login -> execute();
$data = $req_login -> fetch();
}
catch(Exception $e)
{
die('Erreur : ' . $e -> getMessage());
}
if (!$data)
{
header("Location: authentication.php");
exit;
}
else
{
$_SESSION['id_user'] = $data_login['id'];
$_SESSION['login'] = $data_login['login'];
$_SESSION['first_name'] = $data_login['name'];
$_SESSION['id'] = $data_login['id'];
$_SESSION['status'] = $data_login['status'];
$_SESSION['logged'] = true;
$req_conn = $connexion -> prepare("SELECT id_user FROM connexion_user WHERE id_user='".$_SESSION['id']."'");
$req_conn -> execute();
$data_query = $req_conn -> fetch();
if (!$data_query)
{
$insert_connexion = $connexion -> prepare ("INSERT INTO connexion_user(id_user, last_connexion, count) VALUES('".$_SESSION['id']."',NOW(), 1)");
$insert_connexion -> execute();
}
else
{
$update_connexion = $connexion -> prepare ("UPDATE connexion_user SET last_connexion=NOW(), count=count+1 WHERE id_user='".$_SESSION['id']."'");
$update_connexion -> execute();
}
header("Location: $url");
exit ;
<?php
session_start();
$_SESSION = array();
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]
);
}
session_destroy();
header("Location: authentication.php");
exit;
?>
//输入登录名和密码
登录
<form action="login.php" method="POST">
//input login and password
</form>
<?php
@session_start();
if ($_POST['url'] == '')
{
$url = "index.php";
}
else
{
$url = $_POST['url'];
}
$login = $_POST['login'];
$password = $_POST['password'];
$password_hash = hash('sha256', $password);
try
{
$connexion = new PDO('mysql:host=localhost;dbname=data1', 'data1', 'password');
$sql_auth = "
SELECT *
FROM users_list
WHERE
login= :login AND password= :password
LIMIT 1
";
$req_login = $connexion -> prepare("$sql_auth");
$req_login -> bindParam(":login", $login, PDO::PARAM_STR);
$req_login -> bindParam(":password", $password_hash, PDO::PARAM_STR);
$req_login -> execute();
$data = $req_login -> fetch();
}
catch(Exception $e)
{
die('Erreur : ' . $e -> getMessage());
}
if (!$data)
{
header("Location: authentication.php");
exit;
}
else
{
$_SESSION['id_user'] = $data_login['id'];
$_SESSION['login'] = $data_login['login'];
$_SESSION['first_name'] = $data_login['name'];
$_SESSION['id'] = $data_login['id'];
$_SESSION['status'] = $data_login['status'];
$_SESSION['logged'] = true;
$req_conn = $connexion -> prepare("SELECT id_user FROM connexion_user WHERE id_user='".$_SESSION['id']."'");
$req_conn -> execute();
$data_query = $req_conn -> fetch();
if (!$data_query)
{
$insert_connexion = $connexion -> prepare ("INSERT INTO connexion_user(id_user, last_connexion, count) VALUES('".$_SESSION['id']."',NOW(), 1)");
$insert_connexion -> execute();
}
else
{
$update_connexion = $connexion -> prepare ("UPDATE connexion_user SET last_connexion=NOW(), count=count+1 WHERE id_user='".$_SESSION['id']."'");
$update_connexion -> execute();
}
header("Location: $url");
exit ;
<?php
session_start();
$_SESSION = array();
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]
);
}
session_destroy();
header("Location: authentication.php");
exit;
?>
返回到最后一页有点棘手,尤其是当您破坏会话时。但真正简单的方法是,如果没有服务器来记住您的上一个URL,则会丢失标题(“Location:$URL”)在login.php的末尾编写>并将其输出给用户:
<html><body><script> history.go(-2); </script></body></html>
history.go(-2);
如果-2在历史上走得太远,请尝试-1
另一种方法是尝试:
<html><body><script> location.href = document.referrer; </script></body></html>
location.href=document.referer;
但它可能会让您回到登录页面,而不是上一页。尽管如果您使用AJAX进行身份验证,这一行将不会出现问题
(注意:如果有人想在使用AJAX身份验证时执行此操作,您可能需要检查该文档。Referer属于您的域,而不是重定向到您的网站之外)。我的代码运行良好,如果用户断开连接,它将重定向到登录页面,我只想重定向到查看的最后一个页面。是,这就是我的建议:替换标题(“位置:$url”)代码>带有打印(“history.go(-2);”代码>