Помощник
|
Проблема с header ("Location: $url"), Выводит не весь адрес. |
Дилетант_mw
|
Сообщение
#1
|
||
|
|
||
|
|||
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] |
|
|
Дилетант_mw
|
Сообщение
#3
|
|
matroskin8, я привел ссылку как пример. Могут быть и другие случаи ссылок, содержащих в себе &
|
|
|
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 |
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
|
Сообщение
#6
|
|
Дилетант, вам нужно перед отправкой пользователя на страницу go.php заменить в передаваемом url все & на &amр; т.к. амперсанд является служебным символом разделяющим переменные, передаваемых методом GET. Так у меня скрипт домашней странички &amр; меняет на &. Как мне в go.php всё это дело наладить? |
|
|
matroskin8 |
27.1.2011, 21:34;
Ответить: matroskin8
Сообщение
#7
|
|
Как мне в 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 |
|
|
ZiTosS |
27.1.2011, 22:12;
Ответить: ZiTosS
Сообщение
#8
|
|
Дилетант, вы пробовали как я сказал?
Страница с ссылкой: <a href=".../go.php?url=<?php echo str_replace('&', '&amр;', $url)?>">ссылка с редиректом</a> А вариант, который вам привели выше - рабочий. |
|
|
Дилетант_mw
|
Сообщение
#9
|
|
Дилетант, тогда надо конкретнее задавать вопрос... Есть модуль 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 |
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. Работает. Спасибо. Пожалуйста... а то я уж подумал, что вы читаете сообщения через одно :) |
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Вечные ссылки с 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 |
Текстовая версия | Сейчас: 29.3.2024, 3:09 |