Без описания |
Поиск в теме | Версия для печати |
shade2 |
Отправлено: 18 Мая, 2005 - 00:34:26
|
Newbie
Покинул форум
Сообщений всего: 8
Дата рег-ции: Май 2005
Откуда: г. Майкоп
Карма 0
|
Я сделал не много иначе:
CODE:// Ссылка на предыдущую страницу
$back = $_SERVER['HTTP_REFERER'];
if ( isset($_GET['back']) ) $back = $_GET['back'];
if ( isset($_POST['back']) ) $back = $_POST['back'];
// Если ссылка не на наш сайт, то правим на главную страницу нашего сайта :)
if ( $back[0] !== '/' && substr($back, 0, strlen("http://$_SERVER[SERVER_NAME]")) !== "http://$_SERVER[SERVER_NAME]" )
$back = "http://$_SERVER[SERVER_NAME]/index.php";
$INFO['back'] = $back;
В таком случае мы можем передать ссылку назад через GET или POST, что удобно, например, когда пользователь авторизуется на сайте, но с первого раза ошибаеться в пароле/имени
Вот пример шаблона
CODE:
<div>{ERRORS}</div>
Имя <input type="text" name="name" value="{NAME}" /><br />
Пароль <input type="password" name="pass" /><br />
<input type="hidden" name="back" value="{BACK}" />
<input type="submit" />
PS: Проверку - наша ли страница - надо проверять иначе, т.к. например сайт может быть доступен по двум домерам (Например, http://www.site.ru и http://site.ru) |
|
|
TvoyWeb |
Отправлено: 18 Мая, 2005 - 01:55:09
|
Главный здесь
Покинул форум
Сообщений всего: 7072
Дата рег-ции: Нояб. 2003
Откуда: Tashkent Uz
Карма 52
|
shade2
И зачем так заморачиваться?
CODE:<?
//если присутсвует заголовок реферера, то есть страница не загружена с
//чистого листа
if(isset($_SERVER['HTTP_REFERER'])){
//если реферер с нашего сайта
if(eregi("^http://$_SERVER[SERVER_NAME]*",$_SERVER['HTTP_REFERER'])){
//ссылкой назад будет $_SERVER['HTTP_REFERER']
$back = $_SERVER['HTTP_REFERER'];
} else {//В противном случае, ссылкой будет главная страница сайта
$back = "http://".$_SERVER['SERVER_NAME'];
}
} else {//Если реферера нет и страница загружена с чистого листа
//ссылкой будет главная страница сайта
$back = "http://".$_SERVER['SERVER_NAME'];
}
echo $back;
?>
Можешь проверить. И не нужно в формах лишние скрытые поля.
shade2 пишет: т.к. например сайт может быть доступен по двум домерам (Например, http://www.site.ru и http://site.ru)
А вот этого я не понял. Как правило с www это просто алиас сайта.
Или тебе нужно еще определять и это тоже? |
|
|
shade2 |
Отправлено: 18 Мая, 2005 - 03:37:57
|
Newbie
Покинул форум
Сообщений всего: 8
Дата рег-ции: Май 2005
Откуда: г. Майкоп
Карма 0
|
TvoyWeb пишет:А вот этого я не понял. Как правило с www это просто алиас сайта.
Или тебе нужно еще определять и это тоже?
Да, алиас, но представь, пользователь зашел на www.site.ru/page.html от туда на www.site.ru/login.php там ссылка назад site.ru/index.html, а не www.site.ru/page.html потому, что твой рег не учитывает алиасы. Например мой сайт доступен как http://zolotov.h14.ru и http://www.zolotov.h14.ru я везде разбрасываю ссылки первого варианта, но, как оказалось, на мой сайт заходили и по второму алиасу, из-за чего у меня в списке обратных ( http://zolotov.h14.ru/backlink.php ) ссылок писутвовал мой же сайт, хотя я его хотел бы игнорировать (но делал проверку только на первого варианта).
TvoyWeb пишет:И зачем так заморачиваться?
Для удобства пользователя
Пользователь зашел на /page.html от туда на /login.php, ввел пароль, не верно, опять оказался на /login.php, но HTTP_REFERER указывает уже не на /page.html (как хотелось бы), а на /login.php
|
|
|
|
Поиск в теме | Версия для печати |
Страниц (1): [1] |
Сейчас эту тему просматривают: 6 (гостей: 6, зарегистрированных: 0, скрытых: 0) |
« PHP/Perl » |
Все гости форума могут просматривать этот раздел. Только администраторы и модераторы могут создавать новые темы в этом разделе. Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
|
|
|