Как встроить пуникод в мой код?

dlipov

Создатель
Регистрация
28 Июл 2011
Сообщения
35
Реакции
35
Скачал значит я скрипт "Сервис коротких ссылок" - установил, все прекрасно и без ненужных мне наворотов, но как всегда подвох в халяве. Проблема заключается в том, что кириллические домены в бд добавляются, но в итоге редирект с этой короткой ссылки идет не на этот самый домен кириллический, а в пустоту. Решил бороться с этим при помощи punycode. В связи не хватки опыта в php не могу выполнить, как мне кажется довольно таки легкую задачу. И очень надеюсь на вашу помощь.

Задача состоит в том, чтобы встроить в код моего сервиса - код скрипта пуникода. Я планирую, что ссылки которые будут добавляться в кириллице будут кодироваться в
punycode и уже в таком виде храниться в бд.


Есть следующая часть кода:
PHP:
if ( $protocol_ok && $lilurl->add_url($longurl) )
    {
        if ( REWRITE ) // mod_rewrite style link
        {
            $url = 'http://'.$_SERVER['SERVER_NAME'].dirname($_SERVER['PHP_SELF']).$lilurl->get_id($longurl);
        }
        else // regular GET style link
        {
            $url = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].'?id='.$lilurl->get_id($longurl);
        }
 
        $msg = '<br><b><font size="5">Ваша короткая ссылка: <a href="'.$url.'" target="_blank">'.$url.'</a></font></br></b>';
    }
    elseif ( !$protocol_ok )
    {
        $msg = '<br><b><font color="red" size="5">Неправильно введены данные.<br>Попробуйте еще раз.</font></b><br>';
    }
    else
    {
        $msg = '<br><b><font color="red" size="5">Неправильно введены данные.<br>Попробуйте еще раз.</font></b><br>';
    }
}
else ...

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




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


В него нужно вставить:
PHP:
require_once('idna_convert.class.php');
$IDN = new idna_convert();
$domain = 'пример.рф';
$input = $IDN->encode($domain);
echo $input;

Данный код отвечает за конвертацию кириллических доменов в punycode.




Заранее благодарен за помощь.
 
Возможно в этом проблема?
Домен, который мы кодируем в punycode обязательно должен быть в UTF-8.

Надеюсь, ваша проблема была решена.
 
Судя по всему, добавление url происходит в самой первой строке, кодом $lilurl->add_url($longurl) вставь перед
if ( $protocol_ok && $lilurl->add_url($longurl) )
код:
PHP:
require_once('idna_convert.class.php');
$IDN = new idna_convert();
$longurl = $IDN->encode( $longurl );
 
Назад
Сверху