I created a small little api and put in the root forum directory:
Code:
<?
if($_POST['_mySpecialSafeKey_'] == 'omgsospecial!')
{
# Add a user to vBulletin (offline)
define('THIS_SCRIPT', 'vbCreateUserApi.php');
require_once('./global.php');
require_once('./includes/class_dm.php');
require_once('./includes/class_dm_user.php');
$userdata =& datamanager_init('User', $vbulletin, ERRTYPE_ARRAY);
$vbulletin->input->clean_array_gpc('p', array(
'user' => TYPE_STR,
'email' => TYPE_STR,
'ip' => TYPE_STR,
'password' => TYPE_STR
));
$userdata->set('username', $vbulletin->GPC['user']);
$userdata->set('email', $vbulletin->GPC['email']);
$userdata->set('password', $vbulletin->GPC['password']);
$userdata->set('usergroupid', 2);
$userdata->set('ipaddress', $vbulletin->GPC['ip']);
$userdata->set('showvbcode', '1');
$userdata->set('showbirthday', '0');
$userdata->set('usertitle', 'Member');
$userdata->set('reputationlevelid', '5');
$userdata->set('languageid', '1');
$userdata->set('timezoneoffset', '-5');
if($vbulletin->GPC['referrername'] AND !$vbulletin->userinfo['userid']){
$userdata->set('referrerid', $vbulletin->GPC['referrername']);
}
$userdata->pre_save();
// check for errors
if(!empty($userdata->errors)){
$arr = array('success'=>0,'errors'=>$userdata->errors);
echo json_encode($arr);
}
else
{
// save the data
$vbulletin->userinfo['userid']
= $userid
= $userdata->save();
$arr = array('success'=>1,'errors'=>$userdata->errors,'userid'=>$userid);
echo json_encode($arr);
}
}
else{
echo json_encode(array('success'=>0,'errors'=>array('auth failed')));
}
?>
I then call this via curl post from another page with this code:
Code:
$ch = curl_init(); /// initialize a cURL session
curl_setopt($ch, CURLOPT_URL, 'http://'.$domain.'/vbCreateUserApi.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "_mySpecialSafeKey_=omgsospecial!&user=$forum_username&email=$email_address&password=$password&ip=".$_SERVER['REMOTE_ADDR']);
curl_setopt($ch, CURLOPT_TIMEOUT, '60');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$cUrlResponse = curl_exec($ch);
$httpResponseArr = curl_getinfo($ch);
curl_close($ch);
See references:
https://vborg.vbsupport.ru/showthrea...manager&page=2
http://www.vbulletin.com/docs/html/d...er_programming