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”)并将其输出给用户:

<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);”