2013-05-15 8 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

Где вы настройки $ _SESSION [ «URL»] – Anigel

+0

на верхней части всех страниц или в header.php – Dinesh

+0

Try вторя из сессии [ «URL»] и посмотреть, если вы действительно его установили. – 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() на этой странице. иначе сеанс сломается, и он не сможет сохранить нужный URL.

+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

Убедитесь, что вы размещаете на страницу «перезагрузки» информация после 2-го фигурного скобки. Ниже приведен пример

<?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(); 
Смежные вопросы