2013-05-15 108 views
4

我需要關於我的登錄系統的幫助。在我的項目中,當用戶登錄時,他們只需進入他們的帳戶。如果他們瀏覽一些頁面並要求登錄,那麼他們應該在登錄後重定向到該頁面,而不是他們的個人資料頁面。重定向到登錄後請求的最後一頁

這是我嘗試這個代碼,但用戶總是重定向到student_account.php而不是請求的頁面。

$fetch = mysql_fetch_assoc($exec); 
     $_SESSION['login'] = $fetch[uniq]; 
      $_SESSION['emailid'] = $fetch['email']; 
      $emailid = $_SESSION['emailid']; 

     $_SESSION['type'] = 'student'; 
     if(isset($_SESSION['url'])) 
    $url = $_SESSION['url']; // holds url for last page visited. 
else 
    $url = "student_account.php"; // default page for 

header("Location:$url"); 
+0

你在哪裏上的所有網頁的頂部或在header.php中 – Anigel

+0

看看你已經設置了它。 – Dinesh

+0

嘗試呼應了會議[「鏈接」]設置$ _SESSION [「網址」] – Anigel

回答

6

我想你應該嘗試HTTP_REFERER這裏重定向最後訪問的網頁。爲此在您的登錄表單中設置了一個隱藏字段。

HTML: -

<input type="hidden" name="redirurl" value="<? echo $_SERVER['HTTP_REFERER']; ?>" /> 

並獲得形式後redirurl值。

PHP: -

if(isset($_REQUEST['redirurl'])) 
    $url = $_REQUEST['redirurl']; // holds url for last page visited. 
else 
    $url = "student_account.php"; // default page for 

header("Location:$url"); 

或者,如果你正在使用的會話,那麼請確保您在該頁面上啓動會話session_start()。否則會話會中斷,並且無法保存您想要的網址。

+1

這將始終重定向到登錄表單頁面,對不對?只是來自文檔的信息:「這是由用戶代理設置的,不是所有的用戶代理都會設置它,有些提供修改HTTP_REFERER作爲功能的能力,簡而言之,它不能真正被信任。」 – Yann39

0

,而不是代碼:

if(isset($_SESSION['url'])) 
    $url = $_SESSION['url']; // holds url for last page visited. 
else 
    $url = "student_account.php"; // default page for 

header("Location:$url"); 

使用下面的代碼:

$url = ''; 
if(isset($_SESSION['url'])) 
    $url = $_SESSION['url']; // holds url for last page visited. 
else 
    $url = "student_account.php"; // default page for 

header("Location:".$url); 
+2

好....它有什麼不同? – itachi

+0

什麼............... – Dinesh

+1

原因初始化變量是好的做法 – DarkBee

9

您可以將此代碼粘貼到您網站上的所有網頁:

<?php 
session_start(); 
$_SESSION['url'] = $_SERVER['REQUEST_URI']; 

然後登錄頁面,你可以有:

<?php 
session_start(); // needed for sessions. 
if(isset($_SESSION['url'])) 
    $url = $_SESSION['url']; // holds url for last page visited. 
else 
    $url = "student_account.php"; 

header("Location: http://example.com/$url"); 
+0

也可能是必要的只做分配上'GET'請求 – Orangepill

0

確保您將「刷新」頁面信息在第二個花括號之後。下面是一個例子

<?php 
ob_start(); 

if(isset($_POST['submit'])){ 
    $to= " email address"; 
    $email = $_POST["email"]; 
    $subject=$_POST["subject"]; 
    $txt =$_POST["message"]; 
    $email = $_POST["email"]; 
    $headers= "From: {$email}" . "\r\n". 
    "CC:email address"; 
    mail($to,$subject,$txt,$headers); 
}  

header("Location: http://example.com/$url"); 
?> 
+1

請完成與代碼示例您的答案。 –

0
// check if session is expired 
if (session_status() != PHP_SESSION_ACTIVE) { 
    // redirect to the login page 
    header("Location: yourLogin.php?redirect=" . urlencode($_SERVER['REQUEST_URI'])); 
    exit(); 
} 
// after successful login into yourLogin.php redirect 
if(!($redirect = urldecode($_GET['redirect']))) { 
    // set default URI if don’t have to redirect 
    $redirect = 'yourDefault.php'; 
} 
header("Location: $redirect"); 
exit();