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



 

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

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

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Проблема с header ("Location: $url"), Выводит не весь адрес.
Дилетант_mw
Дилетант_mw
Topic Starter сообщение 27.1.2011, 15:29; Ответить: Дилетант_mw
Сообщение #1


Здравствуйте, товарищи специалисты.
Проблема вот какая.
Ставлю ссылку на иной ресурс у себя в домашней страничке в виде:
http://www.mysite.ru/go.php?url=http://fz122.fss.ru/index.php?section=t&service=28

Скрипт go.php содержит:
<?php
$url = ( isset($_GET['url']) and $_GET['url'] ) ? ($_GET['url']) : 'index.php';
if ($url) { header ("Location: $url"); }
?>

В результате загружается только адрес
http://fz122.fss.ru/index.php?section=t

а service=28 после амперсанта отбрасывается.

Подскажите, пожалуйста, как мне сделать, чтобы загружался через go.php весь адрес:
http://fz122.fss.ru/index.php?section=t&service=28
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
matroskin8
matroskin8
сообщение 27.1.2011, 16:13; Ответить: matroskin8
Сообщение #2


Можно так:
[php]<?php
$url = ( isset($_GET['url']) and $_GET['url'] ) ? ($_GET['url']) : 'index.php';
$url .= "&service=".$_GET['service'];
if ($url) { header ("Location: $url"); }
?>[/php]


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Дилетант_mw
Дилетант_mw
Topic Starter сообщение 27.1.2011, 16:25; Ответить: Дилетант_mw
Сообщение #3


matroskin8, я привел ссылку как пример. Могут быть и другие случаи ссылок, содержащих в себе &
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 27.1.2011, 16:46; Ответить: ZiTosS
Сообщение #4


Дилетант, вам нужно перед отправкой пользователя на страницу go.php заменить в передаваемом url все & на &amр; т.к. амперсанд является служебным символом разделяющим переменные, передаваемых методом GET. Ваш скрипт понимает это дело так:
[php]$_GET['url'] = "http://fz122.fss.ru/index.php?section=t";
$_GET['service'] = 28;[/php]
а будет так:
[php]$_GET['url'] = "http://fz122.fss.ru/index.php?section=t&service=28";[/php]
Обратных преобразований из &amр; в & делать не нужно, это за вас сделает браузер.
ВНИМАНИЕ: специально в &amр; заменил англ. символ "p" на русский "р", чтобы движок форума не преобразовывал представление амперсанда
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
matroskin8
matroskin8
сообщение 27.1.2011, 16:53; Ответить: matroskin8
Сообщение #5


Дилетант, тогда надо конкретнее задавать вопрос... в вопросе нигде не упоминалось, что это лишь пример ссылки и могут быть другие варианты.
Тогда тебе подойдет этот элемент $_SERVER['QUERY_STRING'] - он выведет все параметры, переданные через адресную строку, т.е., все, что после вопросительного знака.
[php]<?php
$url = ( isset($_GET['url']) and $_GET['url'] ) ? ($_GET['url']) : 'index.php';
echo $_SERVER['QUERY_STRING']; // в адресной строке http://localhost/go.php?http://fz122.fss.ru/index.php?section=t&service=28 , результат - http://fz122.fss.ru/index.php?section=t&service=28
?>[/php]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Дилетант_mw
Дилетант_mw
Topic Starter сообщение 27.1.2011, 19:45; Ответить: Дилетант_mw
Сообщение #6


(ZiTosS @ 27.1.2011, 15:46) *
Дилетант, вам нужно перед отправкой пользователя на страницу go.php заменить в передаваемом url все & на &amр; т.к. амперсанд является служебным символом разделяющим переменные, передаваемых методом GET.

Так у меня скрипт домашней странички &amр; меняет на &.

Как мне в go.php всё это дело наладить?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
matroskin8
matroskin8
сообщение 27.1.2011, 21:34; Ответить: matroskin8
Сообщение #7


(Дилетант @ 27.1.2011, 17:45) *
Как мне в go.php всё это дело наладить?

Дилетант, $_SERVER['QUERY_STRING'] не подошло разве?
[php]<?php
$url = isset($_GET['url']) ? $_SERVER['QUERY_STRING'] : 'index.php';
if($url != 'index.php') $url = substr($url, 4);
header ("Location: $url");
?>[/php]
При вводе в адресную строку http://www.mysite.ru/go.php?url=http://fz122.fss.ru/index.php?section=t&service=28 переходим на http://fz122.fss.ru/index.php?section=t&service=28, если ничего не вводить, т.е., запустить срипт без параметров: http://www.mysite.ru/go.php, то попадем на http://www.mysite.ru/index.php


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 27.1.2011, 22:12; Ответить: ZiTosS
Сообщение #8


Дилетант, вы пробовали как я сказал?
Страница с ссылкой:
<a href=".../go.php?url=<?php echo str_replace('&', '&amр;', $url)?>">ссылка с редиректом</a>

А вариант, который вам привели выше - рабочий.


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Дилетант_mw
Дилетант_mw
Topic Starter сообщение 28.1.2011, 12:18; Ответить: Дилетант_mw
Сообщение #9


(matroskin8 @ 27.1.2011, 15:53) *
Дилетант, тогда надо конкретнее задавать вопрос...

Есть модуль go.php, приведен выше, которому передается параметр - ссылка.
Эта ссылка может быть любой. Простой или содержать служебные символы &

Если ссылка без амперсанда - всё работает без проблем, а вот ссылки вида:
http ://www.мойсайт. ru/go.php?url=http://чейтосайт.ru/index.php?параметр1=t&параметр2=28&параметрN=28
обрезается. Параметров может быть несколько.

Мне нужно в go.php перед header ("Location: $url"); переменную $url как-то снова собрать.
Поскольку & служебный, то появляется несколько переменных: параметр1, параметр2 и т.д.

---------------------------------------------------------------------------
Проверил вариант от matroskin8. Работает. Спасибо.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
matroskin8
matroskin8
сообщение 28.1.2011, 12:31; Ответить: matroskin8
Сообщение #10


Дилетант, вы все сообщения темы читаете? Да хоть 100 параметров... я же привел рабочий код, и ZiTosS привел свой вариант. Еще раз дублирую код:
[php]<?php
$url = isset($_GET['url']) ? $_SERVER['QUERY_STRING'] : 'index.php';
if($url != 'index.php') $url = substr($url, 4);
header ("Location: $url");
?>[/php]
При вводе в адресную строку http://www.мойсайт. ru/go.php?url=http://чейтосайт.ru/index.php?параметр1=t&параметр2=28&параметрN=28 в $url попадет все, что стоит после вопросительного знака (минус параметр url), т.е., это - http://чейтосайт.ru/index.php?параметр1=t&параметр2=28&параметрN=28. Если в скрипт параметров не попадает, т.е., обращение происходит так - http://www.мойсайт. ru/go.php , то в $url попадет index.php.

P.S. Увидел добавление:
---------------------------------------------------------------------------
Проверил вариант от matroskin8. Работает. Спасибо.

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


Свернуть

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

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Вечные ссылки с 300+ СДЛов, тиц до 750, ЯКи, DMOZ, от 1$/ссылка
вечные ссылки
258 SeoUaSales 128457 27.3.2024, 23:39
автор: FantAlexis
Открытая тема (нет новых ответов) Англоязычный SEO-копирайтинг от $3/100 слов от NeedmyLink | Первая статья бесплатно
2 Needmylink1 975 25.3.2024, 21:22
автор: Needmylink1
Открытая тема (нет новых ответов) Продвижение сайтов крауд-постами (от 0,97$ публ.)
1 toplinks 871 18.3.2024, 15:12
автор: toplinks
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыКто и зачем покупает картинки обезьян по $200 тысяч?
NFT
167 metvekot 27097 6.3.2024, 21:58
автор: Boymaster
Горячая тема (нет новых ответов) PROXY5.ru — Анонимные прокси дешево / IPv4 на 30 дней от 5$
29 sdfs 14762 22.2.2024, 15:35
автор: sdfs


 



RSS Текстовая версия Сейчас: 29.3.2024, 3:09
Дизайн