2015-01-08 2 views
0

У меня есть панель заголовка, включая форму входа в каждой странице моего сайта:перенаправлять пользователя на той же странице после авторизации

<header> 
<form action="login.php" method="post"> 
     <input id="username" name="username" placeholder="Benutzername" type="text"> 
     <input id="password" name="password" placeholder="Passwort" type="password"> 
     <input class="submit-button" type="submit" value="Login"> 
    </form> 
</header> 

При нажатии отправить скрипт в отдельном login.php выполняется. login.php также является дополнительной страницей, где пользователь может повторить попытку после входа в систему.

login.php выглядит следующим образом:

$ousername = ''; 
//We check if the form has been sent 
if(isset($_POST['username'], $_POST['password'])) 
{ 
    //We remove slashes depending on the configuration 
    if(get_magic_quotes_gpc()) 
    { 
     $ousername = stripslashes($_POST['username']); 
     $username = mysql_real_escape_string(stripslashes($_POST['username'])); 
     $password = stripslashes($_POST['password']); 
    } 
    else 
    { 
     $username = mysql_real_escape_string($_POST['username']); 
     $password = $_POST['password']; 
    } 
    //We get the password of the user 
    $req = mysql_query('select password,id from users where username="'.$username.'"'); 
    $dn = mysql_fetch_array($req); 
    //We compare the submited password and the real one, and we check if the user exists 
    if($dn['password']==$password and mysql_num_rows($req)>0) 
    { 
     //If the password is right 
     header('Location: index.php'); 

здесь, где начинается проблема. Как вы можете видеть, пользователь перенаправляется на index.php, когда форма отправляется, и логин завершается успешно. То, что я хотел бы сделать, - перенаправить пользователя на любую страницу, на которой они сейчас находятся, при отправке формы (например, когда пользователь в настоящее время находится на странице, на которой отображаются мои рекомендации и журналы в Интернете, я хочу, чтобы он был перенаправлен на тот же . принципы-страницы, когда Войти преуспевает)

Я пытался что-то вроде этого:

if($dn['password']==$password and mysql_num_rows($req)>0) 
    { 
    if(($_SERVER['REQUEST_URl'] == login.php)){ 
     header('Location: index.php'); 
    } else { 
     header('Location: '.$_SERVER['REQUEST_URl']); 
} 

Это последняя часть login.php:

 //We save the user name in the session username and the user Id in the session userid 
     $_SESSION['username'] = $_POST['username']; 
     $_SESSION['userid'] = $dn['id']; 

     lots html following... 

Я надеюсь, что это понятно. Спасибо!

+0

Знаете ли вы, что при запуске запроса у вас нет '$ dn ['password']'? Вы не выбираете поле 'password', вы выбираете' Passwort1_3' – vaso123

+0

Я знаю, я просто быстро изменил это для этого сообщения :-P. Спасибо хоть! Все остальное работает так, как должно было – Frank

+0

Хорошо, пожалуйста, не делайте этого в futere, всегда показывайте фактический код (кроме имени пользователя/пароля). Если вы это сделаете, мы подумаем, что ошибка есть. – vaso123

ответ

1

Вы должны использовать HTTP_REFERER вместо REQUEST_URl:

if($dn['password']==$password and mysql_num_rows($req)>0) { 
if(($_SERVER['HTTP_REFERER'] === "login.php")){ 
     header('Location: index.php'); 
    } else { 
     header('Location: '.$_SERVER['HTTP_REFERER']); 
    } 
} 
+1

'login.php' является строкой, поэтому оберните ее в' '' или '' '. –

+0

большое спасибо! Это решило проблему! – Frank

1

вам нужно будет использовать:

$_SERVER['HTTP_REFERER']; 

вернуться к последней странице перед процессом входа в систему!

+0

спасибо, сэр! – Frank

1

Доступ к истории браузера можно получить с помощью javaScript. Просто включите скрипт на индексную страницу и отправьте пользователей на нужную страницу.

window.history.go Используйте метод

window.history ссылка
https://developer.mozilla.org/en-US/docs/Web/API/Window.history

Или без Js

http://ha.ckers.org/blog/20070228/steal-browser-history-without-javascript/

Смежные вопросы