Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> передача url через GET, поможите 
V
    Опции темы
iliacmd
Дата 13.2.2009, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 12.1.2009

Репутация: нет
Всего: 1



Помогите!

Надо предать URL через GET параметр. Как известно при передаче через GET все точки превращаются в символы подчеркивания и наоборот. 

Можно ли отключить данную фишку?
Есть ли функция преобразования в исходный вид, если нет подскажите регулярное выражение или какой другой способ

Заранее Очень благодарен!
PM MAIL   Вверх
Wolf1994
Дата 13.2.2009, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: 7
Всего: 29



urldecode должен решать все проблемы восстановления оригинального параметра.
PM MAIL WWW   Вверх
iliacmd
Дата 13.2.2009, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 12.1.2009

Репутация: нет
Всего: 1



к сожалению он ничего не решает :( этот негодяй
PM MAIL   Вверх
skyboy
Дата 13.2.2009, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(iliacmd @  13.2.2009,  10:25 Найти цитируемый пост)
Как известно при передаче через GET все точки превращаются в символы подчеркивания и наоборот. 

неизвестно. впервые о таком слышу.
символы, которые не могут быть переданы через URL, вследствие его ограниченности, кодируются при помощи URL-кодирования. Чтоб декодировать на стороне сервера, вполне можно использовать функцию 
Цитата(Wolf1994 @  13.2.2009,  11:03 Найти цитируемый пост)
urldecode

если у тебя какой-то скрипт на сервере меняет точки на подчеркивания, то без анализа этих скриптов не обойтись. доступ к серверу есть только у тебя.
PM MAIL   Вверх
iliacmd
Дата 13.2.2009, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 12.1.2009

Репутация: нет
Всего: 1



Цитата(skyboy @ 13.2.2009,  12:57)
Цитата(iliacmd @  13.2.2009,  10:25 Найти цитируемый пост)
Как известно при передаче через GET все точки превращаются в символы подчеркивания и наоборот. 

неизвестно. впервые о таком слышу.
символы, которые не могут быть переданы через URL, вследствие его ограниченности, кодируются при помощи URL-кодирования. Чтоб декодировать на стороне сервера, вполне можно использовать функцию 
Цитата(Wolf1994 @  13.2.2009,  11:03 Найти цитируемый пост)
urldecode

если у тебя какой-то скрипт на сервере меняет точки на подчеркивания, то без анализа этих скриптов не обойтись. доступ к серверу есть только у тебя.

не буду спорить скажу лишь, одно -  вы пробуйте прежде чем писать.

Код

<?php 

//$_GET['param'] содержит http://www.url.ru/blabla.bla_bla.rar

$param = $_GET['param'];

echo $param;

// Получам http://www_url_ru/blabla_bla.bla_rar

?>

PM MAIL   Вверх
NLspieler
Дата 13.2.2009, 14:27 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 16
Всего: 19



Попробуй эту функцию, она должна менять все _ на точки

Код

<?php

function url_bearbeiter ($url)
{
    $size = strlen ($url) ;

    for ($n = 0; $n < $size; $n++)
    {
        if ($url[$n] == '_') $url[$n] = '.' ;
    }
    
    return $url ;
}

?>


Это сообщение отредактировал(а) NLspieler - 13.2.2009, 14:32
PM MAIL   Вверх
skyboy
Дата 13.2.2009, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(iliacmd @  13.2.2009,  13:08 Найти цитируемый пост)
не буду спорить скажу лишь, одно -  вы пробуйте прежде чем писать.

попробовал.
код скрипта:
Код

<?php
print_r($_GET);
echo $_GET['param'];
?>

по обращению <домен>/test.php?param=google.com_ получаю:
Цитата

Array ( [param] => google.com_ ) google.com_

Как-то не вижу замены точки на подчеркивания. И наоборот - не вижу замены подчеркивания на точки.

Добавлено через 3 минуты и 1 секунду
впрочем, чего я своевольничаю? возьмем твой скрипт:
Код

<?php 
$param = $_GET['param'];
echo $param;
?>

при обращении по адрес <домен>/test.php?param=http://www.url.ru/blabla.bla_bla.rar получаю:

Интересно, что я делаю неправильно?
PM MAIL   Вверх
bars80080
Дата 13.2.2009, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



NLspieler, для таких вещей придумана str_replace() одна из самых ходовых функций
PM MAIL WWW   Вверх
iliacmd
Дата 13.2.2009, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 12.1.2009

Репутация: нет
Всего: 1



skyboy а какая  версия php у тебя?

Добавлено через 4 минуты и 49 секунд
Цитата(bars80080 @ 13.2.2009,  15:21)
NLspieler, для таких вещей придумана str_replace() одна из самых ходовых функций

очевидно что наверное у меня уже голова под конец рабочего дня не соображает. Напишите пожалуйста код с использованием str_replace где в строке 

www.google.com/index_php 

все точки заменятся на подчёркивания а,подчеркивания на точки и получим мы

www_google_com/index.php 

вот с помощь способа который описал NLspieler это можно сделать добавив, выбор между точкой и подчёркиванием
PM MAIL   Вверх
iliacmd
Дата 13.2.2009, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 12.1.2009

Репутация: нет
Всего: 1



Складывается у меня впечатления что с помощью обработки строки проблему не решить 

Вот исходная строка http://rapidshare.com/files/196971956/2005_Bis_.rar

На выходе http://rapidshare_com/files/196971956/2005_Bis__rar

Теперь если применить  функцию и преобразовать подчёркивания в точки то получается хрення полная

http://rapidshare.com/files/196971956/2005.Bis..rar

Должен же быть способ отключения такого преобразования 
PM MAIL   Вверх
bars80080
Дата 13.2.2009, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(iliacmd @  13.2.2009,  14:46 Найти цитируемый пост)
Должен же быть способ отключения такого преобразования  

скажем корректнее, у тебя там присутствует режим насильного преобразования точек в подчёркивание. почему и где, должен знать ты. может у тебя подключена некая фича, что создаёт это преобразование

в первую очередь надо содать чистый файл в котором выполнить необходимые преобразования и посмотреть какие получаются результаты. это что бы выяснить, виноват ли здесь сервер или какие-то настройки пхп
PM MAIL WWW   Вверх
skyboy
Дата 13.2.2009, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



у меня PHP 5.2.6, но про подобные самовольные преобразования не слышал, когда ещё с 4 версией работал.
PM MAIL   Вверх
NLspieler
Дата 13.2.2009, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 16
Всего: 19



Можно тогда сделать так

Код

<?php
function url_bearbeiter ($url)
{
    $size = strlen ($url) ;
    for ($n = 0; $n < $size; $n++)
    {
        if ($url[$n] == '_') $url[$n] = '.' ;
        elseif ($url[$n] == '.') $url[$n] = '_' ;
    }
    
    return $url ;
}
?>


Функцией str_replace не пользовался, 
 smile решения этой задачи
PM MAIL   Вверх
bars80080
Дата 13.2.2009, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



у этой задачи решения нет, есть только решение устранения ошибки

а твоя url_bearbeiter($url) NLspieler, заменяется всего одной строчкой:

Код

$url = str_replace(array('.', '{{MyUnicIdOfZ}}'), array('_', '.'), str_replace('_', '{{MyUnicIdOfZ}}', $url));

PM MAIL WWW   Вверх
iliacmd
Дата 15.2.2009, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 12.1.2009

Репутация: нет
Всего: 1



эксклюзив для тех кто не сталкивался с заменами точки smile - http://ru.php.net/manual/en/language.variables.external.php - пункт ch1902uk at hotmail dot com

Решение нашёл.

У меня задача была такая: делать редирект через свой сайт следующим образом - http://mysite.ru/?http://dest.site.ru

Глупостью было извлекать урл из GET, так как там заменятся точки, а если в урле были подчёркивания по умолчанию то востановить исходную строку нет возможности.

Урл в исходном виде можно получить только через суперглобальные массивы:

Код

$_ENV['QUERY_STRING'] => http://rapidshare.com/files/196971956/2005_Bis_.rar

или обработать через explode

$_ENV[REQUEST_URI] => /index/?http://rapidshare.com/files/196971956/2005_Bis_.rar

или

[REDIRECT_QUERY_STRING] => http://rapidshare.com/files/196971956/2005_Bis_.rar




А вот почему у skyboy, точки не заменяются это интересно? хотелось бы знать какой параметр у него отключён.

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0623 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.