как перейти на ту же страницу после входа в PHP - PullRequest
20 голосов
/ 28 марта 2010

Например,

ШАГ 1:

Я просматриваю страницу без входа в систему и моя последняя страница перед входом - beforeLogin.php

ШАГ 2:

Теперь моя проблема, когда я вошел в систему, я перенаправляю на страницу index.php. Вместо этого я должен быть перенаправлен на последнюю страницу, которую я просмотрел.

То есть из приведенного выше примера следует перенаправить на beforeLogin.php

Как это можно сделать.

Любая помощь будет ощутимой.

заранее спасибо

Ответы [ 4 ]

36 голосов
/ 28 марта 2010

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

Когда я думаю об отслеживании сеанса пользователя на нескольких страницах Я, как и любой другой программист PHP, думаю об использовании сессий .

Возможным способом может быть сохранение ссылки, которую вы посетили, в переменную сеанса, а затем, когдапользователь достигает страницы 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.
6 голосов
/ 28 марта 2010

Самым простым решением на сегодняшний день является просто:

<hidden name="redirurl" value="<? echo $_SERVER['HTTP_REFERER']; ?>" />

Затем перенаправьте на этот адрес после входа в систему.

Однако это хорошо, только если у вас есть поле для входа на каждой странице. Я лично, и я считаю, что это работает довольно хорошо.

2 голосов
/ 20 апреля 2016
<?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 голосов
/ 28 марта 2010

Вы можете сделать так, чтобы форма входа в систему приводила к текущей странице. это просто и понятно

Скажем, ваша страница выглядит как

<?
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;
}

как то так дополнительная сессия не требуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...