提问者:小点点

如何覆盖以前的页面重定向?


我有以下代码,它将以前的url保存在一个名为logged in的会话中,无论url是否具有参数(即?username=或&username=),该会话都可以工作。

我可以使用这个相同的代码时,没有以前的页面(位置)设置在会话登录。

代码中的else子句没有接收到这一点。 该页面只是保持登录在URL?username=的登录页面上,而不会重定向到索引页面。 不是if isset username,我认为我需要检查登录的会话或检查url是否包含位置,但不知道如何做到这一点。


    //set the session with the name user_name 
    $_SESSION["username"] = true; // this will then accept the login when redirecting to previous page
    $_SESSION['user_name'] = $username;
    
    // setting session start and expire times 10 minutes
    
     $_SESSION['start'] = time(); // Taking now logged in time.
                // Ending a session in 30 minutes from the starting time.
                $_SESSION['expire'] = $_SESSION['start'] + (10 * 60);
    
             //    $_SESSION["username"] = true;
        
      
    
         
    if(isset($username)) {
    
            $url = $_SESSION['loggedin'];
             $queryb = parse_url($url, PHP_URL_QUERY);
        
       
        if ($queryb) {
            $url .= "&username=" .$_SESSION['user_name']; //if url already has parameters add & username to the end
        } else {
            $url .= "?username=" .$_SESSION['user_name'];
        }
           
              header('Location:'.$url); 
              
            } else {
                header('Location: http://example.com/articles/index.php');
     
          }


共1个答案

匿名用户

在第一个if中,检查变量$username是否设置。 但是$username是您已经定义的变量,因此即使它为空也很可能被设置。

为了检查变量是否存在于查询字符串(url中),您最好执行if(isset($_get['username']))