PDA

View Full Version : Check if logged in PHP script


InPhaseVB
12-10-2015, 10:40 AM
vBulletin 5.1.9

Hello I have a number of external pages written in PHP that need to check that a user is logged into vBulletin to allow access to these pages. After much searching I have a script that can check if the user has vb cookies but it is not always the case that cookies are placed on the browser when logged in.

/*--------- PHP Code ---------*/
$vbpath = '/home/ourperfo/public_html';

define('CSRF_PROTECTION', false);
require_once($vbpath . '/includes/vb5/autoloader.php');
error_reporting(E_ALL);
vB5_Autoloader::register($vbpath);
vB5_Frontend_Application::init('config.php');
$userid = vB5_Cookie::get('userid', vB5_Cookie::TYPE_UINT);
$hash = vB5_Cookie::get('password', vB5_Cookie::TYPE_STRING);

if ($userid > 0 AND !empty($hash))
{
echo "logged in";
}
else
{
echo "NOT logged in";
}
/*--------- PHP Code END ---------*/

So what I was wondering if there was a script to check if a user is logged in on the browser I could use. Thanks.

Replicant
12-10-2015, 08:38 PM
The userid and password cookies are not set when one logs in if they haven't clicked the remember me button. So, using the script you have above, if the cookie check fails, then provide a login prompt. I'm assuming this script is based on David Groves' external login (http://www.vbulletin.com/forum/blogs/david-grove/4327147-how-to-log-into-vbulletin-from-an-external-script-on-your-website) tutorial so that part should be trivial. Remove the remember me option and hardcode remember in the login script. This will force the cookies to be set and you will be off and running.

ChristianAlfred
01-23-2016, 04:04 PM
This was great. If you could extract username it would be nice.

Replicant
01-23-2016, 06:21 PM
You can use this in the php code if you have already determined the userid in your script which only returns a username.
vB_Api_User::fetchUserName($userid)

Or, you can use if you don't which returns a fairly large array with tons of user info.
vB_Api_User::fetchCurrentUserinfo()


Either of these can also be called via AJAX in javascript so it can also it can be implemented on cloud also. :)
[forum root]/ajax/api/user/fetchUserName?userid=3 using pageData['userid'] to get the userid
[forum root]/ajax/api/user/fetchUserinfo if you want more data than just a user name.