2013-10-18 4 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> 

누군가가이 문제를 어떻게 해결할 수 있는지 잘 알고 있습니다. 당신이 온 페이지 추가 login.php에 제출

답변

0

: 당신의 login.php 내가이 일을 좋아

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

한 가지 방법으로 다음

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

는 유지하는 것입니다 현재 페이지의 URL 또는 pageID를 저장하는 세션 변수 'lastpage'. 그런 다음 로그인으로 이동하면 세션에서 마지막으로로드 된 페이지를 검색하고 헤더 재 지정을 수행 할 수 있습니다.

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; 

이 솔루션은 당신의 소원 "로그인 후 이전 페이지로 리디렉션을"맞습니다. 그리고 더 많은 방문자가 당신의 웹 사이트에서 그의 중단되었던 여행을 집어들 수있는 것에 따라 it'is는 유혹한다. 게다가, 아파치 서버가 당신을 돌보아주기 때문에 추가적인 폼 입력이 필요하지 않습니다.

관련 문제