перенаправление пользователя на ту же страницу после входа в систему

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>

При нажатии отправить php-скрипт в отдельный 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
  • 0
    Я знаю, я просто быстро изменил это для этого поста :-P. Спасибо хоть! Все остальное работает как надо
Показать ещё 6 комментариев
Теги:

3 ответа

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 - строка, поэтому login.php ее в ' или " .
  • 0
    большое спасибо! это решило проблему!
1

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

Использовать метод window.history.go

window.history reference
https://developer.mozilla.org/en-US/docs/Web/API/Window.history

Или без jS

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

1

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

$_SERVER['HTTP_REFERER'];

чтобы вернуться на самую последнюю страницу перед процессом входа в систему!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню