ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

кириллический домен: как сделать редирект?
  #1  
Старый 11.06.2010, 11:26
Аватар для fbidesign
fbidesign
Новичок
Регистрация: 13.07.2008
Сообщений: 25
Провел на форуме:
19234

Репутация: 0
По умолчанию кириллический домен: как сделать редирект?

Добрый день
проблема такая. Делаю редирект со своего сайта на кириллический домен
(например, Президент.рф)
PHP код:
header("Location: http://президент.рф"); 
(передается кириллицей в простом текстовом виде), приходит в браузер в нем же без изменений.

Опера выдает ошибку "Неверный URL-адрес"
Цитата:
URL-адрес: http://%EF%F0%E5%E7%E8%E4%E5%ED%F2.%F0%F4 содержит символы, недопустимые в позиции, где они обнаружены.
Firefox поступает аналогично.

Подскажите в чем проблема
(т.е. какого черта они преобразуют в urlencode и как от этого избавиться)
Версии браузеров свежие т.е. если я ввожу кириллический домен в строку адреса он открывается нормально
 
Ответить с цитированием

  #2  
Старый 11.06.2010, 11:32
Аватар для BrainDeaD
BrainDeaD
Постоянный
Регистрация: 09.06.2005
Сообщений: 531
Провел на форуме:
3516666

Репутация: 439


По умолчанию

днс не поддерживает кирилицу. по этому существует ascii аналог .xn--p1ai

например: президент.xn--p1ai

Цитата:
Сообщение от fbidesign  
до днс дело тут не доходит
веб браузер переизвращает переданный ему адрес
ну тогда пиши так xn--d1abbgf6aiiy.xn--p1ai

Последний раз редактировалось BrainDeaD; 11.06.2010 в 11:52..
 
Ответить с цитированием

  #3  
Старый 11.06.2010, 11:40
Аватар для fbidesign
fbidesign
Новичок
Регистрация: 13.07.2008
Сообщений: 25
Провел на форуме:
19234

Репутация: 0
По умолчанию

до днс дело тут не доходит
веб браузер переизвращает переданный ему адрес
 
Ответить с цитированием

  #4  
Старый 11.06.2010, 11:51
Аватар для gold-goblin
gold-goblin
Познавший АНТИЧАТ
Регистрация: 26.03.2007
Сообщений: 1,095
Провел на форуме:
5265510

Репутация: 455


По умолчанию

пробуй редиректить на http://xn--d1abbgf6aiiy.xn--p1ai/ (призедент.рф)
 
Ответить с цитированием

  #5  
Старый 11.06.2010, 12:03
Аватар для fbidesign
fbidesign
Новичок
Регистрация: 13.07.2008
Сообщений: 25
Провел на форуме:
19234

Репутация: 0
По умолчанию

а как написать конвертер произвольного кириллического адреса в этот вид?
 
Ответить с цитированием

  #6  
Старый 11.06.2010, 12:07
Аватар для BrainDeaD
BrainDeaD
Постоянный
Регистрация: 09.06.2005
Сообщений: 531
Провел на форуме:
3516666

Репутация: 439


По умолчанию

PHP-класс: http://phlymail.com/en/downloads/idna/download/

пример работы: http://idnaconv.phlymail.de/?lang=en
 
Ответить с цитированием

  #7  
Старый 11.06.2010, 12:42
Аватар для fbidesign
fbidesign
Новичок
Регистрация: 13.07.2008
Сообщений: 25
Провел на форуме:
19234

Репутация: 0
По умолчанию

спс за линк.
то ли класс глючный то ли хостинг...
вообщем в example при скармливании адреса через веб форму все работает.
Если задаю адрес в php-коде (присваиваю переменной)
PHP код:
$_REQUEST['decoded']="http://президент.рф"
перед if (isset($_REQUEST['encode'])) равно как если брать адрес из БД или еще откуда

то выдает
Цитата:
Conversion from UTF-8 to UCS-4 failed: malformed input at byte 8
т.е. матерится на первую русскую букву "п".

Последний раз редактировалось fbidesign; 11.06.2010 в 12:45..
 
Ответить с цитированием

  #8  
Старый 11.06.2010, 13:11
Аватар для krypt3r
krypt3r
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме:
3660186

Репутация: 905


По умолчанию

Ключевое слово в ошибке выделено красным
Цитата:
Conversion from UTF-8 to UCS-4 failed: malformed input at byte 8
 
Ответить с цитированием

  #9  
Старый 16.06.2010, 15:21
Аватар для fbidesign
fbidesign
Новичок
Регистрация: 13.07.2008
Сообщений: 25
Провел на форуме:
19234

Репутация: 0
По умолчанию

Добавил $row[url]=utf8_encode($row[url]);
На выходе получаю http://xn--4cabbgf6aiiy.xn--hdai (какую-то ерунду)
вместо http://xn--d1abbgf6aiiy.xn--p1ai/
ПОЧЕМУ?

Код:
PHP код:
$row mysql_fetch_array($res); //http://президент.рф
$row[url]=utf8_encode($row[url]); //http://президент.рф в UTF

require_once('./idna_convert.class.php');
$IDN = new idna_convert();
$decoded = isset($row[url]) ? stripslashes($row[url]) : '';
$encoded $IDN->encode($decoded); //http://xn--4cabbgf6aiiy.xn--hdai

echo "Location: $encoded <br>";
$decoded $IDN->decode($encoded);
echo 
"back: ".utf8_decode($decoded)."<br>"//http://президент.рф 
что самое интересное - обратное пребразование приводит к исходному результату

Последний раз редактировалось fbidesign; 16.06.2010 в 15:23..
 
Ответить с цитированием

  #10  
Старый 17.06.2010, 06:51
Аватар для krypt3r
krypt3r
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме:
3660186

Репутация: 905


По умолчанию

Че-то вы совсем не то делаете
Цитата:
utf8_encode — Encodes an ISO-8859-1 string to UTF-8
Юзайте iconv()

PS. PHP 5.3.0
Код:
http://ru2.php.net/manual/en/function.idn-to-ascii.php
http://ru2.php.net/manual/en/function.idn-to-utf8.php

Последний раз редактировалось krypt3r; 17.06.2010 в 08:23..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Delphi]/[Pascal] Задай вопрос, получи ответ Isis С/С++, C#, Delphi, .NET, Asm 6762 17.06.2010 21:23
Большой архив статей по раскрутке и оптимизации сайтов _-Ramos-_ Статьи 12 13.06.2010 23:56
Подскажите, как лучшим способом сделать редирект PEPSICOLA PHP, PERL, MySQL, JavaScript 6 15.02.2010 12:57
FAQ. Перед тем как задать вопрос. Fata1ex ICQ 1 04.11.2007 20:35



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ