Войдите в систему Interupt и вернуться на страницу, используя PHP / MySQL - PullRequest
2 голосов
/ 08 октября 2009

В настоящее время я использую PHP / MySQL, и я хотел бы узнать, как лучше всего войти в систему без аутентификации пользователя, а затем автоматически перенаправить его на страницу входа.

Например:

1) Пользователь пытается открыть защищенную страницу.
2) Они перенаправлены и приглашены для входа.
3) После успешного входа в систему они возвращаются на URL-адрес, к которому пытались получить доступ.

В настоящее время на моих «защищенных» страницах я настроил следующий код PHP: (Даже не уверен, что это правильный способ сделать это «безопасным»):

<?php
session_start();

 if ($_SESSION['first'] == "" && $_SESSION['usrID'] == "") {

    print" <script>
   window.location=\"../login/index.php\"
   </script> ";

    }

   ?>

Любые предложения о том, как предоставить эту функцию (и, возможно, сделать мой «безопасный» код лучше), я был бы очень признателен.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 08 октября 2009

Вы можете сохранить запрашивающий URL в сеансе var.

$_SESSION['destination'] = $_SERVER['REQUEST_URI'];

Затем, войдя в систему, вы можете сделать что-то вроде этого:

if (isset($_SESSION['destination'])) {

    header('Location: ' . $_SESSION['destination']);
    exit;
}

Кроме того, это не очень хорошая идея

  print" <script>
   window.location=\"../login/index.php\"
   </script> ";

Использование JavaScript для перенаправления имеет проблемы. С одной стороны, с отключенным JavaScript ничего не произойдет. Попробуйте отправить заголовки местоположения

header('Location: ../login/index.php');
exit; // Call exit to make sure the rest of your code never executes
1 голос
/ 08 октября 2009

Вы можете получить URI реферера в файле /login/index.php и передать его в форму входа в качестве скрытого поля. А после входа пользователя в систему вы просто перенаправляете его на страницу, к которой он ранее пытался получить доступ.

Примерно так:

/ login / index.php:

<?php

// if user submitted login form
if(isset($_POST['login'])) {

// do your login actions here
// and after...
header("Location: " . $_POST['returnto']);

}


//

$user_came_from = htmlspecialchars( $_SERVER['HTTP_REFERER'] );

?>
<form name="my_login_form" action="" method="post">
user: <input type="text" name="user" value="" />
pass: <input type="password" name="pass" value="" />
<input type="hidden" name="returnto" value="<?php echo $user_came_from ?>" />
<input type="submit" name="login" value="login" />
</form>
...