Страница 1 из 2

Работа с Jabber в PHP

СообщениеДобавлено: 11 мар 2009, 02:02
Rostov114
Работа с Jabber в PHP
Офф. сайт: phpbb.com
Версия статьи - 1.0.0

В данной статье я приведу простой пример роботы с протоком Jabber при помощи PHP.
Я буду использовать немного измененный класс позаимствованный у phpBB 3.0.
jabber.class.zip
(6.15 Кб) Скачиваний: 613


Сам класс использовать так:
Код: Выделить всёРазвернуть
<?
// Подключаем класс для работы с Jabber
include "jabber.class.php";

/*
 *  Определение класса и параметры соединения с сервером
 *  
 *  server - сервер на котором находится аккаунт Jabber. Например: jabnet.org
 *  port   - порт для соединения с сервером Jabber, стандартно 5222.
 *  user   - Jabber ID пользователя. Например: Rostov114
 *  pass   - Пароль Jabber ID. 
 *
 *  Имеется также 5й не обязательный параметр который указывает SSL оединение. Но в большинстве случаев он не нужен.
 */

$jabber = new jabber(server, port, user, pass);
            
// Подключаемся к серверу
if (!$jabber->connect())
{
    print "Ошибка соединения с сервером: ".$jabber->server;
    exit();
}
            
// Авторитизируемся
if (!$jabber->login())
{
    echo "Ошибка авторитизации. Пользователь: ".$jabber->username;
    exit();
}

/*
 *  Отправляем сообщение
 *  
 *  JID       - Jabber ID получателя. Например: Rostov114@jabnet.org
 *  MSG       - отсылаемое сообщение
 *  SUBJECT   - Тема сообщения
 *
 *  Также замечу, не в коем случае не убирайте функции mb_convert_encoding() в противном случае сообщения доходить не будут вообще. Это связано с тем что обмен сообщениями клиент <-> сервер происходит в кодировке UTF-8 поэтому если послать сообщение в cp1251 это вызовит ошибку и сообщение не доставится адресату.
 */

$jabber->send_message(JID, mb_convert_encoding(MSG, 'UTF-8','cp1251'), mb_convert_encoding(SUBJECT, 'UTF-8','cp1251'));

// Отсоединяемся
$jabber->disconnect();

// Выводим лог работы
print $jabber->get_log();

exit();
 

:wink: Думаю в комментариях описано все доскональна. Так что вопросов возникнуть не должно.

Re: Работа с Jabber в PHP

СообщениеДобавлено: 11 мар 2009, 02:34
Костик
Ждем теперь Jabber BOT-а :)

Re: Работа с Jabber в PHP

СообщениеДобавлено: 11 мар 2009, 15:02
On-line
Rostov114, спасибо!
zk, может в статьи?

Re: Работа с Jabber в PHP

СообщениеДобавлено: 05 апр 2009, 03:10
nE0sIghT
Код: Выделить всёРазвернуть
$this->jabber->disconnect();

Наверно имелось в виду
Код: Выделить всёРазвернуть
$jabber->disconnect();


Не будет работать, если сообщение не в cp1251

Поскольку класс ориентирован на UTF-8, было бы целесообразнее писать frontend в UTF-8, а перекодирование применять лишь по необходимости.

Зачем здесь sleep() и flush()?

Re: Работа с Jabber в PHP

СообщениеДобавлено: 08 окт 2009, 14:42
server801
http://webdev.ks.ua/2009-02/otpravka-php-jabber.html
тоже интересная тема

Re: Работа с Jabber в PHP

СообщениеДобавлено: 03 дек 2009, 18:37
badApple
В нём можно общаться по микрофону???и он работает через подключение фос??

Re: Работа с Jabber в PHP

СообщениеДобавлено: 23 дек 2009, 15:54
Rostov114
badApple писал(а):В нём можно общаться по микрофону???и он работает через подключение фос??

1. Jabber - это тебе не Skype, поэтому нет.
2. Да, jabnet.org

Re: Работа с Jabber в PHP

СообщениеДобавлено: 09 апр 2010, 15:11
ded-mazay
добавил к образцу в первом посте такие строки:

$server = '192.168.0.221';
$user = 'myuser@myserverstring';
$password = 'mypwd';
$port = '5222';

$JID = 'anyuser@myserverstring';
$MSG = 'test';
$SUBJECT = 'test';

Вываливает не могу авторизоваться, пользователь (тут пусто). Поменял в строке echo "Ошибка авторитизации. Пользователь: ".$jabber->user; на echo "Ошибка авторитизации. Пользователь: ".$jabber->username; пользователь отображается, авторизоваться не может. Убрал авторизацию, вывалил Call to undefined function: mb_convert_encoding(), действительно ни в примере ни в классе этой ф-ции я не нашел, че за хня???

P.S.

Строка иницияализации такая: $jabber = new jabber($server, $port, $user, $password);

Re: Работа с Jabber в PHP

СообщениеДобавлено: 09 апр 2010, 15:14
Zver
Скорее всего у тебя нет PHP библиотеки mb_string.dll

Re: Работа с Jabber в PHP

СообщениеДобавлено: 09 апр 2010, 15:16
ded-mazay
Конечно нет :) У меня линух

Строка конфига PHP:

'./configure' '--build=i686-redhat-linux-gnu' '--host=i686-redhat-linux-gnu' '--target=i386-redhat-linux-gnu' '--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib' '--libexecdir=/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/usr/com' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--cache-file=../config.cache' '--with-config-file-path=/etc' '--with-config-file-scan-dir=/etc/php.d' '--enable-force-cgi-redirect' '--disable-debug' '--enable-pic' '--disable-rpath' '--enable-inline-optimization' '--with-bz2' '--with-db4=/usr' '--with-curl' '--with-exec-dir=/usr/bin' '--with-freetype-dir=/usr' '--with-png-dir=/usr' '--with-gd=shared' '--enable-gd-native-ttf' '--without-gdbm' '--with-gettext' '--with-ncurses=shared' '--with-gmp' '--with-iconv' '--with-jpeg-dir=/usr' '--with-openssl' '--with-png' '--with-pspell' '--with-xml' '--with-expat-dir=/usr' '--with-dom=shared,/usr' '--with-dom-xslt=/usr' '--with-dom-exslt=/usr' '--with-xmlrpc=shared' '--with-pcre-regex=/usr' '--with-zlib' '--with-layout=GNU' '--enable-bcmath' '--enable-exif' '--enable-ftp' '--enable-magic-quotes' '--enable-sockets' '--enable-sysvsem' '--enable-sysvshm' '--enable-track-vars' '--enable-trans-sid' '--enable-yp' '--enable-wddx' '--with-pear=/usr/share/pear' '--with-imap=shared' '--with-imap-ssl' '--with-kerberos' '--with-ldap=shared' '--with-mysql=shared,/usr' '--with-pgsql=shared' '--with-snmp=shared,/usr' '--with-snmp=shared' '--enable-ucd-snmp-hack' '--with-unixODBC=shared,/usr' '--enable-memory-limit' '--enable-shmop' '--enable-calendar' '--enable-dbx' '--enable-dio' '--enable-mbstring=shared' '--enable-mbstr-enc-trans' '--enable-mbregex' '--with-mime-magic=/usr/share/file/magic.mime' '--enable-dbase' '--with-apxs2=/usr/sbin/apxs'

Т.е. расширение mbstring подключено вроде как (--enable-mbstring=shared)