Вход залогиненного пользователя в 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~