The Arcive of Official vBulletin Modifications Site.It is not a VB3 engine, just a parsed copy! |
|
#1
|
|||
|
|||
Automatically login to vbb
I have a site that is controlled by a user class and that vbb is only a part of the site structure. What I need is for when the person logs into the main site, they automatically get logged-in to vbb.
They are registered automatically into vbb from the main user class (direct db input). The vbb registration is disabled -> the user being redirected to the user class login. What I have now is a global vbb plugin which detects whether the user is logged in with the user class, and if yes, I extract their username/password from the database and the vbb login (hidden) is automatically filled in. I then have autologin with another plugin using javascript as Code:
<? if ($memuser !=''){ echo "<script type=\"text/javascript\" language=\"JavaScript\"> <!-- document.mylogin.submit(); //--></script>"; } ?> Any suggestions would be greatly appreciated. Thanx |
#2
|
|||
|
|||
Nevermind, figured out how to do it...
Stripped the login function from login.php and renamed it vbblogin.php and then added it to the user class I am using from the main site. Needed a few minor modifications to the vbb login, but got it working. When someone logs-in from any external page, they are logged in to the userclass as well as vbb all in one login request. Thanks anyway |
#3
|
|||
|
|||
Wow, nice! Don't mind sharing?
|
#4
|
|||
|
|||
If you want to know how....
I use a access_user_class on several sites because it is readily customizable and offers a high degree of security (http://www.finalwebsites.com/snippets.php?id=10). 1. As part of the registration for the general user-class login, I added an automatic vbb account as follows: Code:
//Create Randon Salt 4 password function gen_salt($length = '3') { $salt = ""; $possible = "abcdefghjklmnpqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()_-+=[]{}\/.,?<>~"; $i = 0; while($i < $length) { $char = substr($possible, mt_rand(0, strlen($possible) - 1), 1); $salt .= $char; $i++; } return $salt; } //generate encrypted password $mysalt = gen_salt(); $vbbpasswd = md5(md5($_POST[password]).$mysalt); //Add to vbb user table $db = mysql_connect("localhost", "username", "userpass") or die ("Cannot connect to MySQL"); mysql_select_db("dbname",$db) or die ('Cannot Connect to Forum Database'); $query = "insert into user (usergroupid, username, password, email, usertitle, ipaddress, salt) values ('2', '$_POST[username]', '$vbbpasswd', '$_POST[email]', 'Title', '$ip', '$mysalt')"; $result = mysql_query($query,$db) or die ("Cannot update Discussion Forum Database"); 2. Stripped out the login from vbb login.php and saved it as vbblogin.php: Code:
<? // ############################### start vbb login ############################### $curdir = getcwd (); chdir('/path/to/forum'); $_POST[vb_login_username] = $_GET[user]; $_POST[vb_login_password] = $_GET[mempass]; $_POST[cookieuser] = "1"; require_once('/path/to/forum/global.php'); require_once('/path/to/forum/includes/functions_login.php'); $vbulletin->input->clean_array_gpc('p', array( 'vb_login_username' => TYPE_STR, 'vb_login_password' => TYPE_STR, 'vb_login_md5password' => TYPE_STR, 'vb_login_md5password_utf' => TYPE_STR, 'postvars' => TYPE_BINARY, 'cookieuser' => TYPE_BOOL, 'logintype' => TYPE_STR, 'cssprefs' => TYPE_STR, )); // can the user login? $strikes = verify_strike_status($vbulletin->GPC['vb_login_username']); // make sure our user info stays as whoever we were (for example, we might be logged in via cookies already) $original_userinfo = $vbulletin->userinfo; if (!verify_authentication($vbulletin->GPC['vb_login_username'], $vbulletin->GPC['vb_login_password'], $vbulletin->GPC['vb_login_md5password'], $vbulletin->GPC['vb_login_md5password_utf'], $vbulletin->GPC['cookieuser'], true)) { ($hook = vBulletinHook::fetch_hook('login_failure')) ? eval($hook) : false; // check password exec_strike_user($vbulletin->userinfo['username']); $vbulletin->userinfo = $original_userinfo; } exec_unstrike_user($vbulletin->GPC['vb_login_username']); // create new session process_new_login($vbulletin->GPC['logintype'], $vbulletin->GPC['cookieuser'], $vbulletin->GPC['cssprefs']); // do redirect exec_header_redirect($vbulletin->options['forumhome'] . '.php'); ?> Code:
$_POST[vb_login_username] = $_GET[user]; $_POST[vb_login_password] = $_GET[mempass]; $_POST[cookieuser] = "1"; 3. Now to login, I located the login and cookie functions of the access_user_class.php that performn the login/cookie which happens to be the function set_user(). I tried an include, but the scripting in vbblogin.php and access_user_class.php were in conflict and to take the cheap and easy way out (easier than fixing the conflicts), I used a Location to drive the vbb login: Code:
//define username-password of access_user_class $user = $this->user; $mempass = $this->user_pw; //Send it to vbblogin as a GET header("Location: http://www.mysite.com/forum/mystuff/vbblogin.php?user=$user&mempass=$mempass"); I also changed the login form in the narbar template to the user_class login, added the user_class to the top of headinclude, changed logout to the user_class (rather than vbb), added a few plug-ins to deal with a few issues. As I said, probably not the best way, but it works and probably can be applicable to a host of different external registration/login schemes. Hope it helps someone |
|
|
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
More Information | |
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|