vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB4 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=252)
-   -   Registering an account through database (https://vborg.vbsupport.ru/showthread.php?t=251538)

kuzcos 10-02-2010 07:46 PM

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.

ragtek 10-03-2010 07:02 AM

Use the user datamanager for this. You can find a tutorial in the article section

lleidr 10-04-2010 02:13 PM

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?

kuzcos 10-04-2010 04:25 PM

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);
}

lleidr 10-04-2010 04:30 PM

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

kuzcos 10-04-2010 04:32 PM

too much work for what i was doing..

lleidr 10-04-2010 04:44 PM

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?

Frank T 10-08-2010 04:33 AM

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.


All times are GMT. The time now is 12:28 PM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01026 seconds
  • Memory Usage 1,736KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (2)bbcode_code_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (8)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete