X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Хочу чтобы страница не попала в $_SERVER['HTTP_REFERER']
Евгений_hb
Евгений_hb
Topic Starter сообщение 23.3.2009, 3:09; Ответить: Евгений_hb
Сообщение #1


Вопрос следующий: у меня есть страницы, в конце которых стоит переадресация на страницу $_SERVER['HTTP_REFERER'] (назад на 1 страцу). У меня такие страницы - переключения языка сайта и страница со скриптом авторизации auth.php(ничего не выводит в браузер).
После посещения такой страницы, пользователь может клацнуть в браузере кнопку "назад" и попать на страницу (например auth.php) со скриптом и увидеть при этом пустую страницу в броузере.
Я использую в сообщениях пользователю ссылку "назад", которая равна $_SERVER['HTTP_REFERER'] и если сразу перед этим пользователь проходил процедуру авторизации (auth.php), то клацнув по этой ссылке он попадет на пустую страницу auth.php.

Как этого избежать? Можно ли сделать так, чтобы некоторые страницы не помещались в переменную $_SERVER['HTTP_REFERER'] и не попадали в кнопку браузера "назад"? Или может переадресацию заменить на что-либо более путевое?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
MetSerp
MetSerp
сообщение 23.3.2009, 12:35; Ответить: MetSerp
Сообщение #2


как я понимаю авторизация говорит о наличие данных в массиве Post соответсвенно при авторизации нормальной странице будут переданны данные пост соответсвенно он не пуст.
Тогда вначале скрипта ставите проверку типа:
[PHP] if (empty($_POST['любая переменная'])) {редирект}
else {основной код страницы}[/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Евгений_hb
Евгений_hb
Topic Starter сообщение 23.3.2009, 14:35; Ответить: Евгений_hb
Сообщение #3


Это понятно. Дело не в этом. Рассказываю подробно. У меня есть страница language.php на которой находится скрипт переключения языка интерфейса сайта:
[PHP]
<?php require_once("require.php");
$_SESSION['lang'] = $_GET['lang'];

require_once("lib.php");
// Переадресация
Redir($_SERVER['HTTP_REFERER']);
?>
[/PHP]

Теперь ситуация следующая. После того как пользователь переключает язык сайта (language.php?lang=rus) и в браузере нажмет кнопку "назад", он попадет на language.php и переадресовывается назад. Если пользователь нажмет в браузере кнопку "назад", то увидит пустую страницу браузера. Вот у меня и вопрос - как этого избежать?

У меня мысль такая. Вместо переадресации (Redir($_SERVER['HTTP_REFERER'])) может сделать require_once($_SERVER['HTTP_REFERER']).
Но require_once($_SERVER['HTTP_REFERER']) выдает ошибки, так как включает не файл, а http адрес.
Посоветуйте как быть.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
MetSerp
MetSerp
сообщение 23.3.2009, 14:37; Ответить: MetSerp
Сообщение #4


редиректите через хеадер.
[php]header ("Location: www.mysite.my ");[/php]
в таком случае страница редиректится без вывода страницы.
т.е. если пользователь пойдет по адресу где пустая страница то он неувидит ее а увидит страницу которая указана в хедер
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Евгений_hb
Евгений_hb
Topic Starter сообщение 23.3.2009, 15:01; Ответить: Евгений_hb
Сообщение #5


[PHP]
<?
php require_once("require.php");
header ($_SERVER['HTTP_REFERER']);
$_SESSION['lang'] = $_GET['lang'];
?>
[/PHP]

Проблема в том, что перед вызовом header ($_SERVER['HTTP_REFERER']) я использую require_once("require.php"). Поэтому переадресация не работает. В require.php у меня работа с сессионными переменными. Если я уберу эту строчку, то
$_SESSION['lang'] = $_GET['lang']
не имеет смысла :wacko:
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
MetSerp
MetSerp
сообщение 23.3.2009, 15:04; Ответить: MetSerp
Сообщение #6


повесте условие что если гет передан (то есть пользователь запросил смену языка) то воспользоваться функцией реквайр онс итд если на страницу пришли не передав гет либо передав но не известный (попытка пхп инъекции) тогда использовать редирект через хедер .
И кстати я бы использовал для кнопки назад ява скрипт :goodpost:
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Евгений_hb
Евгений_hb
Topic Starter сообщение 23.3.2009, 15:13; Ответить: Евгений_hb
Сообщение #7


Да, с иньекциями я потом порядок наведу, а сейчас вот нужно с переадресацией назад на страницу разобраться.
Смысл в том, что чтобы поменять язык на сайте, мне все равно нужно включать в страницу require_once("require.php"), потому как нужно менять значение сессионной переменной, а header ($_SERVER['HTTP_REFERER']) после require_once("require.php") не срабатывает. Вот в чем ерунда.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
MetSerp
MetSerp
сообщение 23.3.2009, 15:21; Ответить: MetSerp
Сообщение #8


нет вы не поняли:
[php]<?php
if (!empty ($_GET['lang']))
{
require_once("require.php");
$_SESSION['lang'] = $_GET['lang'];
require_once("lib.php");
// Переадресация
Redir($_SERVER['HTTP_REFERER']);
}
else
{
session_start()//если нужно, или еще какой код что нужен
header ("Location: www.mysite.my ");
}
?> [/php]так не подходит? :pionertrava:

если итак не подходит но при этом вам известны реферы которые вам необходимо игнорировать тогда в вашей кнопке назад добавте переменную (напрмер $ref ) и присвойте ей значение рефера а так же добавте условие на то что если рефер равен например языковой страничке то присвоить переменной значение странички смены языка а если авторизации то соответсвенно странице авторизации
и в функции генерящей ссылку вместо рефера используйте свою переменную:ph34r:
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Евгений_hb
Евгений_hb
Topic Starter сообщение 23.3.2009, 15:49; Ответить: Евгений_hb
Сообщение #9


Большое спасибо. Очень оперативно и грамотно.
Родина Вас не забудет :goodpost:

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Нужен кодер, чтобы пофиксить ошибку Wordpress после переноса сайта
0 Alex-777 949 7.4.2024, 18:05
автор: Alex-777
Открытая тема (нет новых ответов) Apple пойдет на сотрудничество с конкурентами, чтобы выбиться в лидеры с ИИ
4 Room 1230 31.3.2024, 1:15
автор: Liudmila
Открытая тема (нет новых ответов) Как составить уравнение, чтобы назначить цену для товара?
2 rownong27 761 21.3.2024, 12:53
автор: Lumex
Открытая тема (нет новых ответов) Хочу создать сайт кино.
12 jreset26 1900 30.1.2024, 0:12
автор: Liudmila
Открытая тема (нет новых ответов) Как сделать поддомены, чтобы не склеило?
0 Yuliya1982 935 29.11.2021, 5:26
автор: Yuliya1982


 



RSS Текстовая версия Сейчас: 25.4.2024, 6:01
Дизайн