редирект к ранее обращенной странице

soko1

Guest
редирект к ранее обращенной странице

столкнулся с такой проблемой. вообщем у меня есть пхп-файлы, к которым обращается посетитель страницы (например 1.php, 2.php, 3.php, ...), в каждом из этих файлов вписана строчка require("slprotect.php"); (тоесть страница доступна зарегистрированным пользователям и вошедшим под своим логином и паролем), она срабатывает в том случае, если человек не залогинился. если не залогинился - выскакивает эта (slprotect.php) страничка в которой имеется приглашение к входу в систему. допустим человек залогинися. а вот как сделать редирект на ту страницу, к которой он обращался ранее? ну допустим он с самомго начала обратился к 2.php, его выкинуло в скрипт slprotect.php, он залогинился и его выкинуло опять в 2.php. как это реализовать? простите меня за такие вопросы. просто я нигде не нашел на них ответа.
 

Стас

Троечник
Так и делай: когда залогинился, то посылай его куда надо... Что-то я не пойму в чем проблема? Есть в PHP функция header(...) которую применяют для редиректа... Есть сессии, в них можно записать о том, как залогинился юзер.
 

rotoZOOM

ACM maniac
На страничку логина передавай URL той странички на который уйти пользователю после успешной регистрации.
В целях безопасности этот URL храни в сессии.
Если не хочешь в сессии, тогда передавай GET'ом но не URL, а какой-нибудь индекс в массиве URL'ов, который будет сформирован у тебя в php.
 

Tn

Guest
header("Location: ".$_SERVER['HTTP_REFERER']);

не поможет в этой ситуации?
 

rotoZOOM

ACM maniac
Поможет только в случае если форма регистрациии вся хранится в slprotect.php
 

soko1

Guest
спасибо вам за ответы.
ЗЫ форма регистрации лежит в другом файле. в slprotect лежит только форма для login'a и алгоритм.
 

rotoZOOM

ACM maniac
Ну я и имел ввиду логин :))) регистрация - это регистрация на сайте === login.
Вообщем после ввода юзером логина и пароля, у тебя форма субмитится на какой-то php'шник. Вот с этого php'шника после проверки действительно можно сделать то, что посоветовал Tn
 

soko1

Guest
мне надо теперь следующее, например человек обращается к странице 1.php, которая закрыта для доступа (тоесть в ней вписано require("slprotect.php");), его должно выкинуть в файл slprotect.php где будут поля для ввода логина и пароля. если он введет и логин и пароль правильно, то его должно выкинуть на страницу, к которой он обращался ранее (1.php), только уже с открытым доступом. помимо этого я хотел бы еще учесть, что человек может небыть зарегестрированным пользователем, тогда на странице входа (файл slprotect.php) будет дана ссылка на регистрацию. после успешной регистрации ему должно вывестись сообщение и потом редиректом выкинуть в ту страницу, к которой он обращался ранее.
подскажите пож-ста как это сделать. если можно, то с примерами. простите за то что я вас отвлекаю, но мне это действительно нужно сделать и понять как это работает.
спасибо большое.

-~{}~ 23.02.05 07:19:

>На страничку логина передавай URL той странички на который уйти пользователю после успешной регистрации.

а как сохранить URL страницы, к которой я обращался ранее в переменную?
ну допустим я нажал 2.php в ней подключается slprotect.php, а дальше?
до меня что-о не доходит=(
помогите разобраться...и извините за ламерство.
 

Фанат

oncle terrible
Команда форума
soko1
все можно сделать гораздо проще.
тебе ничего запоминать вообще не надо.
ВСЁ происходит по одному и тому же адресу.
твой slprotect.php просто выводит форму. экшен у неё все тот же - 2.пхп. (PHP_SELF)
принимаешь форму, slprotect.php е обрабатывает, авторизует, и делает локейшен опять на PHP_SELF!
и всё!
 

soko1

Guest
Фанат
ты про всплывающее окно? (если да, то мне нужен только веб-интерфейс). в любом случае спасибо, попробую ознакомится с этой штукой (PHP_SELF) поближе...

скажите, вот мой знакомый написал мне следующий код:
<php>
if ("slprotect.php" === strtolower((substr($_SERVER["SCRIPT_NAME"], 1+strrpos($_SERVER["SCRIPT_NAME"], "/")))))
{
$recall = TRUE;
}
else
{
$recall = FALSE;
}

if (!$recall) // Если был вызван "защищенным" файлом то сохраняем url того файла.
{
if (!session_is_registered('url'))
{
session_register('url');
$url = $_SERVER["SCRIPT_NAME"];
}
}
if (($recall) && isset($url))
{
header("Location:".$url); // Переход на вызывавшую страницу
unset($url);
exit();
}
</php>
почему-то не работает.
 

Фанат

oncle terrible
Команда форума
какое еще всплывающее окно?! какой интерфейс? чо ты пил?
при чем здесь вообще какие-то окна?
поясни, что ты имеешь в виду? Где у меня про какие-то окна написано?
у меня написано, как решить твою задачу просто, как две копейки. какие там у ТЕБЯ окна, интерфейсы - меня совершенно не волнует.

а вот приятель твой глупость написал.
потому и не работает

-~{}~ 23.02.05 08:57:

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

soko1

Guest
Фанат
прости относительно окон - просто я не выспался - всю ночь код писал=(
а ты можешь наглядно продемонстрировать свой пример? просто я еще совсем ламер в этом плане. спасибо тебе за то что ты не отказался помочь.
 

soko1

Guest
все равно не понимаю. где про эту фичу хоть почитать-то?
 

Фанат

oncle terrible
Команда форума
да негде про такую фичу читать.
в учебнике по пхп.
что у тебя вызывает затруднения?
в файле slprotect.php вывести форму?
в файле slprotect.php проверить введенные в форму логин с паролем??
в файле slprotect.php сделать редирект на $_SERVER['PHP_SELF'], если пароль правильный?
 

soko1

Guest
> в файле slprotect.php вывести форму?
не вызывает затруднения

>в файле slprotect.php проверить введенные в форму логин с паролем??
не вызывает затруднения

>в файле slprotect.php сделать редирект на $_SERVER['PHP_SELF'], если пароль правильный?
а вот тут поподробнее пожалуйста.
просто пойми, я это делаю впервые, поэтому мне сложно без примера. это тоже самое, если бы я говорил что я не знаю алфавита, а ты мне пытался объяснить насколько просто читать. объясни (я не про чтение=), я про скрипт) если не сложно.

>в учебнике по пхп.
что-то не нашел ничего=( у меня просто руки кривые, вот ничего и не получается...
 

Фанат

oncle terrible
Команда форума
а вот тут поподробнее пожалуйста.
header("Location: ".$_SERVER['PHP_SELF']);

что-то не нашел ничего=(
в учебнике конкретно этого и не должно быть.
твоя задача - это сочетание рутинных операций.
каждая из них освещена в учебнике.
но количество сочетаний этих действий - бесконечно.
и все описать невозможно.
твоя задача изучить рутинные операции а дальше уже тебе никто не поможет - только сам их применять
 
Сверху