jaxl php,从PHP创建EJaberd用户

我是在2016年提出这个问题的,有比公认的答案和最高投票的答案更容易实现这个问题。

使用xmpp-php库,最常见的是:

虽然此库不支持在开箱即用的情况下添加用户,但您可以很容易地扩展它。

下面是我为添加用户而编写的类:

use Fabiang\Xmpp\Util\XML;

/**

* Register new user

* @param string $username

* @param string $password

* @param string $email

* @package XMPP\Protocol

* @category XMPP

*/

class Register implements ProtocolImplementationInterface

{

protected $username;

protected $password;

protected $email;

/**

* Constructor.

*

* @param string $username

* @param string $password

* @param string $email

*/

public function __construct($username, $password, $email)

{

$this->username = $username;

$this->password = $password;

$this->email = $email;

}

/**

* Build XML message

* @return type

*/

public function toString()

{

$query = "%s%s%s";

return XML::quoteMessage($query, XML::generateId(), (string) $this->username, (string) $this->password, (string) $this->email);

}

}

必须在ejabberd.cfg文件中启用带内注册,因为默认情况下会拒绝:

访问、注册、[允许、全部]。

最后,下面是使用此类的示例代码:

private function registerChatUser($name, $password, $email)

{

$address = 'tcp://yourserverip:5222';

$adminUsername = 'youradmin';

$adminPassword = 'youradminpassword';

$options = new Options($address);

$options->setUsername($adminUsername)->setPassword($adminPassword);

$client = new Client($options);

$client->connect();

$register = new Register($name, $password, $email);

$client->send($register);

$client->disconnect();

}

如果服务器没有有效的SSL证书,则库调用将失败。要么放一个有效的证书,要么用下面的代码段替换socketclient.php中的这个部分

// call stream_socket_client with custom error handler enabled

$handler = new ErrorHandler(

function ($address, $timeout, $flags) {

$options = [

'ssl' => [

'allow_self_signed' => true,

'verify_peer_name' => false,

],

];

$context = stream_context_create($options);

return stream_socket_client($address, $errno, $errstr, $timeout, $flags, $context);

},

$this->address,

$timeout,

$flags

);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值