Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Расшифровка URL-зашифрованных строк поисковых машин
 
 автор: юра   (16.12.2004 в 11:10)   письмо автору
 
 

есть счётчик, записывает в базу данных страницы откуда пришёл посетитель,
типа http://search.rambler.ru/srch?words=%EF%EE%EB%EE%E2%E0%FF+%E4%EE%F1%EA%E0+%F6%E5%ED%E0&where=1
помогите перевести кракозябры на русский язык.
пробовал rawurldecode , ничего не получается. а моему заказчику интересно по каким словам находят его сайт.

   
 
 автор: Andre_vet   (16.12.2004 в 13:39)
 
   для: юра   (16.12.2004 в 11:10)
 

Штирлиц возьми
http://search.rambler.ru/srch?words=половая+доска+цена&where=1

   
 
 автор: юра   (16.12.2004 в 13:46)   письмо автору
 
   для: Andre_vet   (16.12.2004 в 13:39)
 

у меня в переменную $ref вставляется строка в виде буковок-процентов, я беру из переменных окружения с помощью вот этого
$ref=$_SERVER["HTTP_REFERER"];

,а тебе как удалось в переменную записать русскую строчку?

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

   
 
 автор: cheops   (16.12.2004 в 21:55)   письмо автору
 
   для: юра   (16.12.2004 в 13:46)
 

Он привёл расшифровку выдаваемую функцией rawurldecode - это её подчерк - вместо пробелов +....

   
 
 автор: glsv (Дизайнер)   (16.12.2004 в 22:05)   письмо автору
 
   для: юра   (16.12.2004 в 13:46)
 

Andre_vet говорит про то, что есть программа "Штирлиц", которая очень хорошо перекодирует текст. Нужно скопировать в нее текст и нажать кнопку "Decode"
-----------------------------------
Но нам нужно решать эту задачу на PHP.

   
 
 автор: cheops   (16.12.2004 в 22:17)   письмо автору
 
   для: glsv (Дизайнер)   (16.12.2004 в 22:05)
 

Чего только не придумают люди :))) Но всё что имеет место быть в Интернете можно перекодировать PHP, так как в большинстве случаев оно им и закодировано :)))

   
 
 автор: glsv (Дизайнер)   (16.12.2004 в 14:50)   письмо автору
 
   для: юра   (16.12.2004 в 11:10)
 

Нужно спросить cheopsa, там было несколько хитрых моментов, но он будет только вечером.

   
 
 автор: cheops   (16.12.2004 в 21:53)   письмо автору
 
   для: юра   (16.12.2004 в 11:10)
 

Код
<?php 
 $test 
"http://search.rambler.ru/srch?words=%EF%EE%EB%EE%E2%E0%FF+%E4%EE%F1%EA%E0+%F6%E5%ED%E0&where=1";
 echo 
urldecode($test);
?>

Даёт
http://search.rambler.ru/srch?words=половая доска цена&where=1

в кодировке win-1251 - скорее всего грабли с кодировками. Так часто бывает, строка например идёт в KOI8-R, а страница отображается в win-1251 и наоборот. Я уж не помню какой поисковик какую кодировку любит - точно все разные (там и win-1251 и KOI8-R и utf8), некоторые особенно зловредные товарищи вроде Yandex используют их все, единственное радует, что различить их можно по виду запроса...

   
 
 автор: юра   (17.12.2004 в 06:54)   письмо автору
 
   для: cheops   (16.12.2004 в 21:53)
 

Спасибо, urldecode деиствительно работает,
правда как и говорил cheops через раз.
причём по разному на локальной машине и на хостинге, видимо от сервера зависит и от php.ini.
но половину реферер-адресов переводит правильно.
а у меня посетители в основном с поисковиков и клиент интересуется качеством посетителей .., не пишу ли я <титл>XXX, sex</титл> в титлах. ;-))
[b]спасибо ;-))[b]

   
 
 автор: юра   (17.12.2004 в 09:58)   письмо автору
 
   для: юра   (17.12.2004 в 06:54)
 

Кстати я тут немного уточнил работу штатной функции urldecode на практике
Рекомендую использовать её два раза сподрят для верности.
Если попадаются знаки типа %25E0 первой функцией urldecode они приводятся к виду %E0 , а второй функцией urldecode знак %E0 приводит к родной букве "а" в лучшем случае если кодировка win.
Если текст в кодировке koi то дополнительно надо конвертировать в win.

пример недоделаной самописной функции (нет проверки надо ли конвертировать строку или нет)

function DecodeUrl($string)
{
$string=urldecode(urldecode($string));
return $string=$string.'<br>'.$string=convert_cyr_string($string,k,w) ;
}

$string='http://www.yandex.ru/yandpage?q=448766800&p=2&ag=d&qs=text%3D%25D0%25C9%25CC%25CF%25CD%25C1%25D4%25C5%25D2%25C9%25C1%25CC%2B%25C2%25C5%25D2%25A3%25DA%25CF%25D7%25D9%25CA%26stype%3Dwww ';

echo DecodeUrl($string);

выводит на экран две строки одна конвертрованная другая нет:

http://www.yandex.ru/yandpage?q=448766800&p=2&ag=d&qs=text=РЙМПНБФЕТЙБМ ВЕТЈЪПЧЩК&stype=www
http://www.yandex.ru/yandpage?q=448766800&p=2&ag=d&qs=text=пиломатериал берёзовый&stype=www


надо бы дописать функцию чтобы она проверяла надо конвертировать строку или нет,
а то если вначале строка будет вин после convert_cyr_string($string,k,w) её невозможно прочитать.

а так функция переводит 100% рефер-адресов ramblera i yandexa.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования