Вход залогиненного пользователя в IRC webchat

Транслит кириллических букв, убрал форму ввода канала и ника, если входит залогиненый пользователь. Вместо нее будет надпись To connect to freenode IRC and join channel #ubuntu-ru as SuperNik[web] click 'Connect'. и собственно кнопка Connect.

<?php
require("SSI.php");
 
function encodestring($st)
{
   $st = strtr($st, 
         array(
            "Ґ"=>"G","Ё"=>"YO","Є"=>"E","Ї"=>"YI","І"=>"I",
            "і"=>"i","ґ"=>"g","ё"=>"yo","є"=>"e",
            "ї"=>"yi","А"=>"A","Б"=>"B","В"=>"V","Г"=>"G",
            "Д"=>"D","Е"=>"E","Ж"=>"ZH","З"=>"Z","И"=>"I",
            "Й"=>"Y","К"=>"K","Л"=>"L","М"=>"M","Н"=>"N",
            "О"=>"O","П"=>"P","Р"=>"R","С"=>"S","Т"=>"T",
            "У"=>"U","Ф"=>"F","Х"=>"H","Ц"=>"TS","Ч"=>"CH",
            "Ш"=>"SH","Щ"=>"SCH","Ъ"=>"","Ы"=>"YI","Ь"=>"",
            "Э"=>"E","Ю"=>"YU","Я"=>"YA","а"=>"a","б"=>"b",
            "в"=>"v","г"=>"g","д"=>"d","е"=>"e","ж"=>"zh",
            "з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l",
            "м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
            "с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h",
            "ц"=>"ts","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"",
            "ы"=>"yi","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya",
            " "=>"_"
            )
          );
   return $st;
}
 
$user = preg_replace("/[^\x28-\x29\x2C-\x39\x40-\x5F\x61-\x7D/", "", encodestring(mb_convert_encoding($context['user']['name'], 'UTF-8', 'HTML-ENTITIES')));
 
if ($context['user']['name'] == '' )
   echo '<iframe src="http://webchat.freenode.net/?nick=guest...%5Bweb%5D&channels=ubuntu-ru&prompt=1" style="border:1px solid #999" width="100%" height="600" frameborder="0" scrolling="no"></iframe>';
else echo '<iframe src="http://webchat.freenode.net/?nick=', $user,'%5Bweb%5D&channels=ubuntu-ru" style="border:1px solid #999" width="100%" height="600" frameborder="0" scrolling="no"></iframe>';
?>

Идеи и обсуждение

  • А что станет с символами, которых нет в списке? ~Agafonov~
    • Спецсимволы, которые я пробовал (!№@;%) нормально передаются в форму входа, но не могут использоваться в никах. Добавил еще одну процедуру, которая вырезает все нестандартные ascii-символы. Для верности добавил функцию urlencode(), которая преобразовывает все спецсимволы в безопасный вид. ~ZwS~
      • Проверку надо делать наоборот - оставляя только поддерживаемые символы ~Agafonov~
        • Отредактировал. Теперь пропускает только A-Z a-z 0-9 , . \ { } [ ] ( ) ^ | _. ~ZwS~
  • Подключил к боту ubuntuhelp плагин IRCstatus для получения количества пользователей онлайн. Инфу брать отсюда: http://logs.ubuntu.ru/status Нужно это для того, что бы по замыслу на кнопке для чата, отображалась цифра с количеством пользователей. Например: «Чат (96)» ~A4Tech~