2013-10-18 129 views
0

雖然有一些解決方案,我無法讓他們作爲我的情況的解決方案。登錄後重定向上一頁

我需要在用戶登錄後將用戶重定向到同一頁面而不是myaccount頁面。

從login.php;

if (isset($_POST['action']) && $_POST['action'] == "login") 
{ 
    $username = mysql_real_escape_string(getPostParameter('username')); 
    $pwd  = mysql_real_escape_string(getPostParameter('password')); 
    $ip   = getenv("REMOTE_ADDR"); 

    if (!($username && $pwd)) 
    { 
     $errormsg = "Please enter username and password"; 
    } 
    else 
    { 
     $sql = "SELECT * FROM prcb_users WHERE username='$username' AND password='".PasswordEncryption($pwd)."' LIMIT 1"; 
     $result = smart_mysql_query($sql); 

     if (mysql_num_rows($result) != 0) 
     { 
       $row = mysql_fetch_array($result); 

       if ($row['status'] == 'inactive') 
       { 
        header("Location: /login?msg=2"); 
        exit(); 
       } 

       smart_mysql_query("UPDATE prcb_users SET last_ip='$ip', login_count=login_count+1, last_login=NOW() WHERE user_id='".(int)$row['user_id']."' LIMIT 1"); 

       if (!session_id()) session_start(); 
       $_SESSION['userid'] = $row['user_id']; 
       $_SESSION['FirstName'] = $row['fname']; 

       if ($_SESSION['goRetailerID']) 
       { 
        $redirect_url = RetailerSEOurl($_SESSION['goRetailerID']); 
        unset($_SESSION['goRetailerID']); 
       } 
       else 
       { 
        $redirect_url = "/myacount"; 
       } 

       header("Location: ".$redirect_url); 
       exit(); 

     } 
     else 
     { 
       header("Location: /login?msg=1"); 
       exit(); 
     } 
    } 
} 

登錄表單;

<form action="" method="post"> 
E-mail <input type="text" class="input2" name="username" value="<?php echo getPostParameter('username'); ?>" /> 

Password <input type="password" class="input2" name="password" value="" /> 

<input type="hidden" name="action" value="login" /> 
<input type="submit" class="butt" name="login" id="login" value="Login" /> 
</form> 

我很感激,如果有人能幫助我,我該如何解決這個問題。

回答

0

當您提交到login.php中添加你來自的頁面:

<input type="hidden" name="redirect" value="<?php echo htmlspecialchars($full_url);?>" /> 

然後在你的login.php我喜歡做這個

header("Location: " . $_POST["redirect"]); 
0

的一種方式,是保持會話變量'lastpage',其中存儲當前頁面的URL或pageID。當您進入登錄狀態時,您可以從會話中檢索上次載入的頁面並執行標題重定向。

0

當用戶點擊登錄鏈接或提交表單進入登錄頁面時,HTTP_REFERER被設置。爲了返回到調用頁面,請嘗試:

$redirect_url = isset($_SERVER["HTTP_REFERER"]) ? 
    $_SERVER["HTTP_REFERER"] : "/myacount"; 
// 
// avoid an infinite loop: not redirect to the login page: 
// 
if(empty($redirect_url) || preg_match("/\/login/", $redirect_url)) 
{ 
    $redirect_url = "/myacount"; 
} 
header("Location: " . $redirect_url); 
exit; 

該解決方案能夠滿足你的願望「以前重定向頁面登錄後」。更多 這是誘惑,因爲訪問者將在您的網站上中斷他的遊覽。而且,不需要額外的表單輸入,因爲apache服務器會照顧你。