Как перейти на ту же страницу после входа в PHP
Например,
ШАГ 1:
Я просматриваю страницу без входа в систему, а моя последняя страница перед входом в нее - доLogin.php
ШАГ 2:
Теперь моя проблема, когда я вошел в систему, я перенаправляю на страницу index.php. Вместо этого я должен быть перенаправлен на последнюю страницу, что я просматривал.
То, что из приведенного выше примера, должно быть перенаправлено на beforeLogin.php
Как это можно сделать.
Любая помощь будет заметна.
заблаговременно
Ответы
Ответ 1
Вам нужен способ отслеживания посещенных веб-страниц, чтобы вы могли ссылаться на последнюю страницу, к которой пользователь просматривал.
Когда я думаю о отслеживании пользовательского сеанса на нескольких страницах I, как и любой другой программист PHP, подумайте об использовании sessions.
Возможным способом может быть сохранение ссылки, посещенной в переменную сеанса, а затем, когда пользователь достигает страницы login.php
(страница для входа в систему), укажите header
перенаправить на $url
, заданный переменной сеанса.
ПРИМЕЧАНИЕ. Ниже фрагменты кода не были протестированы или скомпилированы.
Вы можете вставить этот код на все свои страницы на своем веб-сайте:
<?php
session_start(); // starts the session
$_SESSION['url'] = $_SERVER['REQUEST_URI']; // i.e. "about.php"
Здесь используются переменные $_SERVER
, чтобы вернуть URI текущей страницы, посещенной с помощью $_SERVER['REQUEST_URI']
И затем для страницы входа в систему, которая поможет вам продемонстрировать:
<?php
session_start(); // needed for sessions.
if(isset($_SESSION['url']))
$url = $_SESSION['url']; // holds url for last page visited.
else
$url = "index.php"; // default page for
header("Location: http://example.com/$url"); // perform correct redirect.
Ответ 2
Самое простое решение - просто:
<hidden name="redirurl" value="<? echo $_SERVER['HTTP_REFERER']; ?>" />
Затем перенаправляйтесь к этому адресу после входа в систему.
Однако это полезно только в том случае, если на каждой странице есть окно входа в систему. Я лично делаю, и я нахожу, что это работает очень хорошо.
Ответ 3
вы можете сделать действие формы входа в систему на текущей странице.
что простой и простой
Скажем, ваша страница выглядит как
<?
include "auth.php"; // you need it anyway, as you want to control user auth
//the rest of the page;
?>
<form method="POST">
login form
</form>
<?
//the rest of the page;
if (!empty($_SESSION['user_id'])) echo "Welcome registered user!";
?>
и auth.php позаботится о проверке входа в систему, а затем перенаправить на текущую страницу не будет большой проблемой
<?
if (isset($_REQUEST[session_name()])) session_start();
if (isset($_POST['auth_name'])) {
//password checking
if (pass ok) {
session_start();
$_SESSION['user_id'] = $row['id'];
}
header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
exit;
}
что-то вроде этого
нет необходимости в дополнительном сеансе.
Ответ 4
<?php
session_start(); // starts the session
$_SESSION['url'] = $_SERVER['REQUEST_URI']; // i.e. "about.php"
Здесь используются переменные $_SERVER
, чтобы вернуть URI текущей страницы, посещенной с помощью $_SERVER['REQUEST_URI']
И затем для страницы входа в систему, которая поможет вам продемонстрировать:
<?php
session_start(); // needed for sessions.
if(isset($_SESSION['url']))
$url = $_SESSION['url']; // holds url for last page visited.
else
$url = "index.php"; // default page for
header("Location: http://example.com$url"); // perform correct redirect.