Например,
ШАГ 1:
Я просматриваю страницу без входа в систему, а моя последняя страница перед входом в нее – доLogin.php
ШАГ 2:
Теперь моя проблема, когда я вошел в систему, я перенаправляюсь на страницу index.php. Вместо этого я должен быть перенаправлен на последнюю страницу, что я просматривал.
То, что из приведенного выше примера, должно быть перенаправлено на beforeLogin.php
Как это можно сделать.
Любая помощь будет заметна.
заранее спасибо
Вам понадобится способ отслеживания посещенных веб-страниц, чтобы вы могли ссылаться на последнюю страницу, к которой пользователь просматривал.
Когда я думаю о отслеживании сеанса пользователя на нескольких страницах, я, как и любой другой программист PHP, думаю об использовании сеансов .
Возможным способом может быть сохранение ссылки, посещенной в переменную сеанса, а затем, когда пользователь достигает страницы login.php
( страница для входа в систему ), вы можете перенаправить header
на $url
заданный переменной сеанса.
Вы можете вставить этот код на все свои страницы на своем веб-сайте:
<?php session_start(); // starts the session $_SESSION['url'] = $_SERVER['REQUEST_URI']; // ie "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.
Самое простое решение – просто иметь:
<hidden name="redirurl" value="<? echo $_SERVER['HTTP_REFERER']; ?>" />
Затем перенаправляйтесь на этот адрес после входа в систему.
Однако это хорошо, только если на каждой странице есть окно входа в систему. Я лично это делаю, и я нахожу, что это работает очень хорошо.
вы можете сделать действие формы входа на текущую страницу. это просто и просто
Скажем, ваша страница выглядит так:
<? include "auth.php"; // you need it anyway, as you want to control user's 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; }
что-то вроде этого не требует дополнительной сессии.
<?php session_start(); // starts the session $_SESSION['url'] = $_SERVER['REQUEST_URI']; // ie "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.