Хорошо, скажем, например, пользователь посещает:
mysite.com/user/profile/demo,
И они выполняют действие, чтобы подписаться на указанного пользователя и перейти к:
mysite.com/user/follow/demo,
И они должны быть авторизованы, поэтому он перенаправляет их в форму входа, и они пытаются войти один раз, но это не удается, а затем они успешно входят в систему в секундах, если я использую:
history.go(-1)
Это вернется на страницу входа, потому что они однажды не смогли войти. Что можно сделать? Используя
?referrer=user/profile/demo then if that's set go back to that page?
Я открыт для идей, так что было бы здорово, если бы вы мне их поделили.
2 ответа
В mysite.com/user/follow/demo
перед перенаправлением на страницу входа вы можете сохранить текущий URL в сеансе. Затем, как только они успешно вошли в систему, вы можете проверить наличие этой переменной сеанса и перенаправить на нее.
Примере:
mysite.com/user/follow/demo
<?php
session_start();
if (not logged in) {
$_SESSION['redirect_after_login'] = $_SERVER['REQUEST_URI'];
header('Location: /login');
exit;
}
...
mysite.com/login
<?php
session_start();
...
login code
...
if (user has logged in) {
if (isset($_SESSION['redirect_after_login'])) {
$url = $_SESSION['redirect_after_login'];
unset($_SESSION['redirect_after_login']);
header('Location: ' . $url);
exit;
}
}
Примечание: непроверенный псевдокод
Я бы порекомендовал вам сохранить местоположение для перенаправления, скажем, GET
, поскольку использование history.go, естественно, вернется в историю, а не обновит кнопку входа в систему и т. Д.
Когда пользователь вошел в систему, установите header('Location: ' . $_GET["r"]);
, чтобы перенаправить пользователя обратно.
Похожие вопросы
Новые вопросы
php
PHP — это широко используемый язык сценариев общего назначения с открытым исходным кодом, мультипарадигмальный, динамически типизированный и интерпретируемый, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.