Version: 2.00, by Billspaintball
Developer Last Online: Nov 2011
Category: Integration with vBulletin -
Version: 3.7.0 RC 1
Rating:
Released: 03-20-2008
Last Update: Never
Installs: 100
Re-useable Code Additional Files Translations
No support by the author.
Hack Description
This is a cut down version of the user authentication and access control system I use on the non vB pages on my website.
This uses the vB 3.7 login system to log you in and out. It allows you to move between your forums and other pages on your site while remaining logged in.
It allows you to do things such as restrict pages by usergroup, display different content depending on a user being logged in or not.
For example, you can have banner Adds displaying to non members only, and/or let members access to specific content.
Ive cut it down to the bare minimum that it needs to work, no fancy stuff such as avatars, PM's, or even formating.
I will try and offer support, but work and family commitments mean I don't have much free time.
This code is a mix of my own, and pieces I have used from other hacks that are floating around.
This script has been confirmed as working on
vB 3.7 RC1
Change log
Version 2.00 (21st March 2008)
Initial vB 3.7.x release
Click on Install
If you have this script installed then please click on the install link because;
You will get notified if any security issues are reported.
You will get notified when there are any upgrades to this script
It gives me a warm fuzzy feeling and motivates me to develop more
Donations
First of all, to be clear. This script is 100% free.
The hack is pretty useless without some usage instructions so here they are.
We can use conditionals to hide or display depending on a number of things such as
Logged in or out status,
or restrict to members of a specific usergroup.
We do this by using conditionals in php tags where the normal content of a webpage would go.
If you want something only accessable to a certain usergroup, use this code in your webpage. This example is only visible to members of usergroup 6.
PHP Code:
<?php
if ($vbulletin->userinfo['usergroupid'] == '6' )
{
echo "This is only visible to people in usergroup 6";}
?>
You can use a simple variation of this to restrict entire pages to a certain usergroup.
For example,
PHP Code:
<?php
if ($vbulletin->userinfo['usergroupid'] == '6' )
{
echo "Have stuff for here";
} else {
echo "You do not have permission for this page"; }
?>
You can of course use multiple usergroups by just modifiying the if statement a little.
For example:
PHP Code:
if ($vbulletin->userinfo['usergroupid'] == '9'
or $vbulletin->userinfo['usergroupid'] == '6'
)
Another use is to display different content to users depending on if they are logged in or not. For example
PHP Code:
<?php
If ($vbulletin->userinfo['userid']!=0)
{
echo "Your logged in so we can display this";
} else {
echo "Your not logged in so we display this";
}
?>
Another use is to restrict advertising to people who are not logged in.
For example
Of course you can play around with conditionals to do a whole range of things, these are just brief example snippets.
Troubleshooting
If your reading this chances are you are having problems.
Here are some common causes and fixes.
Headers already sent or cookies already sent errors. Chances are that there is something, even just a space before the 4 lines of code in part 1. Edit this and ensure that there are no spaces before it.
Path problems are the next biggest problem. Your paths must be exact else it will not work. Double check that all paths are correct.
If you are unsure what the path is place the following code in a page all by itself.
PHP Code:
<?php
echo getcwd();
?>
Name this file something like path.php then upload it to your website, browse to it and it will show you the exact path to your sites root.
Appears to login ok, but wont show you as logged in
Often caused by the vB cookie path setting.
To fix log into you vB admin area;
Code:
AdminCP -> vBulletin Options -> Cookies and HTTP Header Options -> Path to Save Cookies
Change
'Suggested Settings' dropdown from '/forums/' to '/' or 'yourdomain.com'
Subdomains and cross site logins
This is a known issue with many scripts (not just this one), sometimes fixable sometimes not. Its caused by vB, PHP and your hosts security measures.
First change your "cookie domain" settings.
vB Admin > Control Panel > Cookies and HTTP Header Options > Cookie Domain
Change it from being blank to
PHP Code:
.yourdomain.com
You may need to set a post referrer in your whitelist.
vB Admin > Control Panel > General Settings > Post Referrer Whitelist
Instructions on what to enter are listed where you change this setting.
That should fix it if your forum is a subdomain.
If that fails then,
Open your /forum/login.php file and look for this code:
PHP Code:
error_reporting(E_ALL & ~E_NOTICE);
Below that add
PHP Code:
define('SKIP_REFERRER_CHECK', true);
Now save this and overwrite the file on the server with this one.
A further reported work around is to make a copy of the required Forum Forum files on your second Server. Then you must set in the config.php on the second server to use the ip of the server with which the VB-Database is running.
404 Error on expiring passwords
Cause - When redirected for expired password you are redirected to the directory that your login script is located in, not your forums root.
Fix - Edit phrase called
Code:
passwordexpired
Your current phrase should be
Code:
Your password is {1} days old, and has therefore expired.<br />
<br />
Please change your password using <a href="profile.php?{2}do=editpassword">this page</a>.
change it to
Code:
Your password is {1} days old, and has therefore expired.<br />
<br />
Please change your password using <a href="../forums/profile.php?{2}do=editpassword">this page</a>.
where ../forums/ is your forums directory.
Still got problems?
It may be a conflict with somthing already in your site.
To check this we can just make a simple page.
Call it test.php and use just this code in it.
(Make sure there is no whitespace before the 1st line)
PHP Code:
<?php
$curdir = getcwd ();
chdir('/path/to/your/forums');
require_once('/path/to/your/forums/global.php');
chdir ($curdir);
?>
<html>
<body>
This is a heading<br />
This is some more stuff <br />
And another line<br />
You get the idea<br />
Just place stuff as you normally would with HTML<br />
I use CSS to style and position on my site fwiw<br />
<br />
How about we put the login box right under here?<br />
<br />
<?php
require_once('/path/to/your/login_inc.php');
?> </body>
</html>
Naturally, change paths to fit your forums, then upload it.
Browse to it and run it.
Wow, very timely!
I am developing a new section of the site, but it will be for forum users only.
My one glitch, the pages will be in cold fusion, not php. Any chance something like this could be modified for cfm pages?
Wow, very timely!
I am developing a new section of the site, but it will be for forum users only.
My one glitch, the pages will be in cold fusion, not php. Any chance something like this could be modified for cfm pages?
I have zero experience in cold fusion so I cant answer this either way.
I have been struggling getting this to work for me. I am just trying to get the test.php script to work first. when i am not logged in, i cannot log into the pages off of vb, they are linked to the folder i have my non-vb files in, rather than the forum folders. www.mydomain.com/forums www.mydomain.com/music
i want to use this script in the music folder. when i try to load the test.php file, it looks for images and registration stuff under /music/images and /music/register.php rather thant /forums/images and what not. i have tried various setups for the login_inc.php file and also put the music folder inside the /forums dirstory (/forums/music) and still with no luck.
im pretty sure its something stupid and i'm over thinking this whole problem. but your help would be much abliged. thanks much.
I had a devil of a time with this too, until I changed the URL in my login_inc.php from
this:
PHP Code:
$forumpath = "http://www.yoursite.com/forums/";
to this:
PHP Code:
$forumpath = "./forums/";
I have no idea if this will help you in your circumstances, but I thought I would share it just in case. I had multiple domain names pointing to the same content.