vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   Modification Requests/Questions (Unpaid) (https://vborg.vbsupport.ru/forumdisplay.php?f=112)
-   -   Login outside vB / Protect content (https://vborg.vbsupport.ru/showthread.php?t=59777)

rrottman 01-06-2004 10:31 AM

Login outside vB / Protect content
 
I have been searching at vbulletin.org, vbulletin.nl, vbulletintemplates.com and vulletin.com (which is unfortunately down on both URLs at present). I have seen some posts relating to this issue but none was dealing with exactly what I want to achive. Also I know how to code parts of the solution I am very much interested in your professional opinion as to how to do it best.

I have a website where vB is just a subpart of the overall content. So there are plenty of other non-vB .php pages.

Basically what I want to achieve is, that users outside the board can login without having to use the login form provided by vB. If the have logged in successfully they should not be taken to the forum home index.

I thought of just copying the login.php form but obviously the POST method takes users to the forum index after logging in. That is not what I want to do.

I have written a function which uses global.php and some other includes to get the session ($bbuserinfo) data, so once users have logged in I can user their authentication information to protect content outside vB and do all sorts of things (like personalization, etc.)

The only thing missing to have a complete picture is: How could I create a simple .php page which users can use to submit ther vB username / password, log into the board and exit to any other page outside vB?

Any idea?
Your help, as always, is greatly appreciated.

[FG]Omega 01-06-2004 03:08 PM

Exactly this is what I'm looking for.

Zachery 01-06-2004 03:09 PM

connect to global.php and look at the navbar template for the login code...

rrottman 01-06-2004 03:12 PM

@[FG]Omega:
Thanks for supporting this idea. ;-)
If I get it done, I'll let you know.

@Faranth:
What do you mean with "connect to global.php"? Are you saying that the page outside vB which should hold the login box should include global.php and I should just copy some code from the navbar?

P.S.:
I submitted a feature request to the folks at vb.com to provide an exiturl-feature.

Zachery 01-06-2004 03:15 PM

first if we are outside of the forums directory we do this
PHP Code:

// ## Changes Directory so it can accesss vBulletin ##
chdir("/full/path/to/forums/"); 

then
PHP Code:

 // ## Grabs global.php ##
require("./global.php"); 

now you have "connected" to global.php / vBulletin

rrottman 01-06-2004 03:22 PM

Thanks.
I know that and I do it already to check whether users are known or unknown outside the board. But thanks for clarifying anyway.

Meanwhile I took a look at the navbar template:

PHP Code:

<form action="login.php" method="post" onsubmit="md5hash(vb_login_password,vb_login_md5password)">
        <
input type="hidden" name="do" value="login" />
        <
input type="hidden" name="forceredirect" value="1" />            <input type="hidden" name="vb_login_md5password" />

... 

And here is the list of issues I have with this:

1. Once the user submits this form the form action forces him to go to login.php which leaves him with the forum index page. But I want the user to get transferred to whatever URL I want outside vB after logging in.

2. What do the undocumented hidden input fields do, forceredirect and vb_login_md5password mean?

Does this clarify my thoughts a bit?

Zachery 01-06-2004 03:44 PM

i belive vB needs a redirect ONLY in the login to passon some session data.

there hidden to make sure users dont change them

vb_login_md5password is how the users password is stored i belive

might wanna check login.php

rrottman 01-06-2004 05:36 PM

It seems as if nobody has a real solution for it. Maybe I did not explain myself in a good way. I'm not a native English speaker. :-)

I try it again (I also posted this at vb.com as part of another thread in the suggestions forum):

Once again I try to explain what I want to achieve. Maybe it's the easiest way if you quickly describe how to do it as opposed to trying to chase my mistakes. :-)

I want to create a page one.php (not being a part of the vB structure) which allows a currently logged out user to log in. The form fields for username and password could either be in a form inside one.php itself or one.php could contain a link to another page two.php or it could contain a link to a .php file provided as part of the vB system.

If the login is successful I want the user to be forwarded to a page three.php, again, not being part og vB. If the login is not successful, I want the user to end up at four.php.

Zachery 01-06-2004 05:58 PM

why all the differnt pages?

assassingod 01-06-2004 06:00 PM

You'd have to edited the functions to show where the login redirects too, but this would affect all other pages too. The only way I can think of doing it is to create another functions similar to vBs login code.

rrottman 01-06-2004 06:04 PM

Quote:

Originally Posted by assassingod
You'd have to edited the functions to show where the login redirects too, but this would affect all other pages too. The only way I can think of doing it is to create another functions similar to vBs login code.

Could you possibly explain how to do this?
I know there are a couple of threads available which deal somehow with the login box. But I found nothing explaining to a relatively new vB "hacker" how to do a login box.

I also looked into the navbar template. The main problem is, that coding the form itself is pretty easy but the form action almost always submits to vB's login.php which would then again do its standard forwarding stuff.

So I guess it's not only the form which needs to be codes (the easy part) but also the login procedure itself.

Any hint on where to start? How to do it? Maybe anybody has already done it? Maybe I can reuse parts of the vB code?

assassingod 01-06-2004 06:43 PM

If you take a look at login.php, you'll get a fair idea on how to do it. I myself have never tried it (since i've never needed too) but i'm sure all the info is in login.php

[FG]Omega 01-07-2004 12:52 PM

Omega]ok, thx Faranth. Now I use a hack (for vb 2.3.3) , that displays also how many pm's you have, who's online (usernames) and how many threads and posts were posted since the last visit. Can anybody tell me how to add this info when a user logs in (on a non-vb-page)?
of course for vb 3.0.0 RC ;)

Like this:

"Welcome back, [FG]Omega! Your last visit was: 04.01.2004. X new threads and X new posts were posted since your last visit. View new posts (<-- this is a link).

Your CP (also a link) | Log out (also a link) | Private Messages - You have X new PMs since your last visit.

There are now X members online"

^-- yeah, like that ^^

Dave-ahfb 01-11-2004 11:36 PM

It sounds as though we are after the same thing. Much of what you are asking I already have figured out on my test page ( http://www.ahfb2000.com/test.php )

We do seem to have different results when redirecting. Upon login mine brings you back to the nonvb page you logged in from.

I am close to getting it 100% but I cannot get it to show the user info (username, avatar, remove login and show logout). It is always the guest templates which show.

Dave

rrottman 01-12-2004 06:48 AM

@[FG]Omega:
To display the information you are describing, you can do your page like this:
PHP Code:

<?php
    chdir
("./forum");
    require_once(
"./global.php");
    require_once(
"./includes/functions_bigthree.php");
    global 
$bbuserinfo;
    if (
$bbuserinfo['userid'] > 0) {    // userid = 0 usually means unregistered / logged out
        
echo ("Welcome back {$bbuserinfo['username']}. Thank you for posting {$bbuserinfo['posts']} so far.<br />Number of PMs:  {$bbuserinfo['pmtotal']} / Unread: {$bbuserinfo['pmunread']}.<br />");
        echo (
"Your last visit was on: {$bbuserinfo['lastvisitdate']}.<br />");

    
$activeusers '';
    if (
$vboptions['displayloggedin'])
    {
        
$datecut TIMENOW $vboptions['cookietimeout'];
        
$numbervisible 0;
        
$numberregistered 0;
        
$numberguest 0;
    
        
$forumusers $DB_site->query("
            SELECT
                user.username, (user.options & 
$_USEROPTIONS[invisible]) AS invisible, user.usergroupid,
                session.userid, session.inforum, session.lastactivity,
                IF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid
            FROM " 
TABLE_PREFIX "session AS session
            LEFT JOIN " 
TABLE_PREFIX "user AS user ON(user.userid = session.userid)
            WHERE session.lastactivity > 
$datecut
            ORDER BY " 
iif($permissions['genericpermissions'] & CANSEEHIDDEN'invisible ASC, ') . "username ASC, lastactivity DESC
        "
);
    
        if (
$bbuserinfo['userid'])
        {
            
// fakes the user being online for an initial page view of index.php
            
$bbuserinfo['joingroupid'] = iif($bbuserinfo['displaygroupid'], $bbuserinfo['displaygroupid'], $bbuserinfo['usergroupid']);
            
$userinfos = array
            (
                
$bbuserinfo['userid'] => array
                (
                    
'userid' => $bbuserinfo['userid'],
                    
'username' => $bbuserinfo['username'],
                    
'invisible' => $bbuserinfo['invisible'],
                    
'inforum' => 0,
                    
'lastactivity' => TIMENOW,
                    
'musername' => fetch_musername($bbuserinfo'joingroupid')
                )
            );
            
$numberregistered 1;
            
$numbervisible 1;
            
fetch_online_status($userinfos[$bbuserinfo['userid']]);
            
$loggedin $userinfos[$bbuserinfo['userid']];
            eval(
'$activeusers = ", ' fetch_template('forumhome_loggedinuser') . '";');
        }
        else
        {
            
$userinfos = array();
        }
        
$inforum = array();
    
        while (
$loggedin $DB_site->fetch_array($forumusers))
        {
            
$userid $loggedin['userid'];
            if (!
$userid)
            {    
// Guest
                
$numberguest++;
                
$inforum["$loggedin[inforum]"]++;
            }
            else if (empty(
$userinfos["$userid"]['lastactivity']) OR ($userinfos["$userid"]['lastactivity'] < $loggedin['lastactivity']))
            {
                
$userinfos["$userid"] = $loggedin;
                
$numberregistered++;
                if (
$userid != $bbuserinfo['userid'])
                {
                    
$inforum["$loggedin[inforum]"]++;
                }
                
$loggedin['musername'] = fetch_musername($loggedin);
    
                if (
fetch_online_status($loggedin))
                {
                    
$numbervisible++;
                    eval(
'$activeusers .= ", ' fetch_template('forumhome_loggedinuser') . '";');
                }
            }
        }
    
        
// memory saving
        
unset($userinfos$loggedin);
    
        
$activeusers substr($activeusers 2); // get rid of initial comma
    
        
$DB_site->free_result($loggedins);
    
        
$totalonline $numberregistered $numberguest;
        
$numberinvisible $numberregistered $numbervisible;
    
        }
        echo (
"Currently active users: $activeusers <br />");
        }
    
?>


rrottman 01-12-2004 06:49 AM

The output the above code produces on a non VB page is:

Welcome back localhost. Thank you for posting 3 so far.
Number of PMs: 0 / Unread: 0.
Your last visit was on: 01-11-2004 11:45 PM.
Currently active users: localhost

Davey-UK 01-12-2004 12:10 PM

Thanks, it works great for me apart from 2 things.

1. Active user link goes to member.php, instead of /board/member.php

2. If not logged in, it shows:

Unable to add cookies, header already sent.
File: N/A
Line: 0

I would like this to say Welcome guest or something (maybe a login box)

Thanks
Dave

Jannefant 01-12-2004 03:00 PM

The posted code + the asked stuff "I would like this to say Welcome guest or something (maybe a login box)" ist the hack i´m looking for ... an the links have to redirect to /boardpath/*.php ... instead of /*.php ...

If these options are made ... i can use it ...

noonespecial 01-14-2004 06:06 PM

any addition to this?


All times are GMT. The time now is 02:45 AM.

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.01155 seconds
  • Memory Usage 1,840KB
  • 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
  • (4)bbcode_php_printable
  • (1)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (19)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