Go Back   vb.org Archive > vBulletin 4 Discussion > vB4 Programming Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 10-02-2010, 07:46 PM
kuzcos kuzcos is offline
 
Join Date: Sep 2010
Posts: 5
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default 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.
Reply With Quote
  #2  
Old 10-03-2010, 07:02 AM
ragtek ragtek is offline
 
Join Date: Mar 2006
Location: austria, croatia
Posts: 1,630
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Use the user datamanager for this. You can find a tutorial in the article section
Reply With Quote
  #3  
Old 10-04-2010, 02:13 PM
lleidr lleidr is offline
 
Join Date: Aug 2006
Posts: 7
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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?
Reply With Quote
  #4  
Old 10-04-2010, 04:25 PM
kuzcos kuzcos is offline
 
Join Date: Sep 2010
Posts: 5
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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);
}
Reply With Quote
  #5  
Old 10-04-2010, 04:30 PM
lleidr lleidr is offline
 
Join Date: Aug 2006
Posts: 7
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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
Reply With Quote
  #6  
Old 10-04-2010, 04:32 PM
kuzcos kuzcos is offline
 
Join Date: Sep 2010
Posts: 5
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

too much work for what i was doing..
Reply With Quote
  #7  
Old 10-04-2010, 04:44 PM
lleidr lleidr is offline
 
Join Date: Aug 2006
Posts: 7
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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?
Reply With Quote
  #8  
Old 10-08-2010, 04:33 AM
Frank T Frank T is offline
 
Join Date: Jun 2010
Posts: 18
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 11:54 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.07083 seconds
  • Memory Usage 2,234KB
  • Queries Executed 13 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (2)bbcode_code
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (8)post_thanks_box
  • (8)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (8)post_thanks_postbit_info
  • (8)postbit
  • (8)postbit_onlinestatus
  • (8)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.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/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete