The Arcive of Official vBulletin Modifications Site.It is not a VB3 engine, just a parsed copy! |
|
#1
|
|||
|
|||
Registering an account through database
Ok so I have an external website, I want to register accounts with my vBulletin install from my external website, I have a couple of questions though.
password - how is this created? salt - how is this created? Thanks. |
#2
|
|||
|
|||
Use the user datamanager for this. You can find a tutorial in the article section
|
#3
|
|||
|
|||
A link would be helpful as I am attempting to do something similar. I am new to vbulletin development. Is datamanager what VB calls their API? Does VB have an API or some sort of web service?
|
#4
|
|||
|
|||
i figured it out without using datamanager.
$salt = fetch_user_salt(); $password = hash_password($pw, $salt); mysql_query("INSERT INTO user(usergroupid, username, password, email, usertitle, joindate, reputation, reputationlevelid, options, ipaddress, referrerid, salt) VALUES('2', '" . $user . "', '" . $password . "', '" . $email . "', 'Junior Member', '" . time() . "', '10', '4', '45108311', '" . $_SERVER['REMOTE_ADDR'] . "', '2', '" . $salt . "')"); } } function fetch_user_salt($length = 30) { $salt = ''; for ($i = 0; $i < $length; $i++) { $salt .= chr(rand(33, 126)); } return $salt; } function hash_password($password, $salt) { // if the password is not already an md5, md5 it now if ($password != '') { $password = md5($password); } // hash the md5'd password with the salt return md5($password . $salt); } |
#5
|
|||
|
|||
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'))); } ?> 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); https://vborg.vbsupport.ru/showthrea...manager&page=2 http://www.vbulletin.com/docs/html/d...er_programming |
#6
|
|||
|
|||
too much work for what i was doing..
|
#7
|
|||
|
|||
I tried your way and couldn't figure out the encryption stuff, was glad I was able to find vbulletin took the time to create an api. Your way works fine, however, it could break with newer versions. The api abstracts you from the lower level vbulletin code which should prevent problems should vbulletin change lower level code.
--------------- Added [DATE]1286215003[/DATE] at [TIME]1286215003[/TIME] --------------- Any idea on how to do a login now? |
#8
|
|||
|
|||
I do the following to create hundreds of users at a time.
$userdm = new vB_DataManager_User($vbulletin, ERRTYPE_ARRAY); $userdm->set('username', $tsData[uName]); // My new name is in this array. $userdm->set('password', 'admin@yoursitename.com); $userdm->set('email', 'adminXYZ@yoursitename.com); $userdm->set('usertitle', 'Auto-Generated User'); $userdm->set('usergroupid', 9); // My own custom user group for auto-generated userID's $tsData[UID] = $userdm->save(); $db->query_write("UPDATE user SET email = '' WHERE userid = '$tsData[UID]'"); // Erase the email address so you can use it over again. |
|
|
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
More Information | |
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|