[Snippet] Force login before you see anything V2

Little Mods and Snips 1

[Snippet] Force login before you see anything V2

Postby Sekuro » 10 May 2012, 11:23

Force login before you see anything V2

Un-logged-in users see login-mask only.

V2: After login, the user will be redirected to the link, the user requested before.

Credit: BNa / 4seven (V2)

Simple. Perfect. Cant be tricked out.

open

ucp.php

find

Code: Select all
    case 'login':
        if ($user->data['is_registered'])
        {
            redirect(append_sid("{$phpbb_root_path}index.$phpEx"));
        }

        login_box(request_var('redirect', "index.$phpEx"));
    break;


replace with

Code: Select all
    case 'login':
        // Force login before you see anything V2 / BNa / 4seven / 2012
        $return_value = request_var('return', '', true);
        $return_value = str_replace('|', '&', $return_value);
        // Force login before you see anything V2 / BNa / 4seven / 2012

        if ($user->data['is_registered'])
        {
            redirect(append_sid("{$phpbb_root_path}index.$phpEx"));
        }

        // Force login before you see anything V2 / BNa / 4seven / 2012
        if ($return_value !== '')
        {
        preg_match('#p=[0-9]+#', $return_value, $parse_finds);
        if(isset($parse_finds[0]) && !empty($parse_finds[0]))
        {
        $return_value = $return_value . '#' . str_replace('=','',$parse_finds[0]);
        }
        login_box(request_var('redirect', "$return_value"));
        }
        else
        
{
        login_box(request_var('redirect', "index.$phpEx"));
        }
        // Force login before you see anything V2 / BNa / 4seven / 2012
    break;


includes/functions.php

find

Code: Select all
        // The following assigns all _common_ variables that may be used at any point in a template.
        $template->assign_vars(array( 


before add

Code: Select all
        // "Force login before you see anything" for guests and bots / BNa / 4seven / 2012
        $login_script_name = pathinfo($_SERVER['PHP_SELF'], PATHINFO_FILENAME);
        
        if 
(($login_script_name !== 'ucp') && (($user->data['user_id'] == ANONYMOUS) || ($user->data['is_bot'])))
        {
        if(isset($_SERVER['REQUEST_URI']))
        {
        $referer = trim($_SERVER['REQUEST_URI']);
        $referer = explode('/',$referer);
        $referer = array_reverse($referer);
        $referer = $referer[0];
        $referer = str_replace('&', '|', $referer);
        $referer = (($referer !== false) && !empty($referer)) ? "&return=$referer" : "";
        redirect(append_sid("{$phpbb_root_path}ucp.$phpEx", "mode=login$referer")); return;
        }
        else
        
{
        redirect(append_sid("{$phpbb_root_path}ucp.$phpEx", "mode=login")); return;
        }}
        // "Force login before you see anything" for guests and bots / BNa / 4seven / 2012          


Each guest or bot, who visit your site, see only the login mask. Registering is possible, if active, bcs. of ucp.php?mode=register.
Mod-Bot / Service-Team
User avatar
Sekuro

Tiptop

Tiptop
 
Posts: 241
Joined: 11 Feb 2008, 11:49
 
Resolution: 1440x900



[Snippet] Force login before you see anything V2 - Addition

Postby Sekuro » 10 May 2012, 11:24

Addition V2

For a positiv-list (at example faq.php, additional to ucp.php), the code must be different.

Code: Select all
        // Force login before you see anything V2 / BNa / 4seven /  2012
        
$login_script_name = pathinfo($_SERVER['PHP_SELF'], PATHINFO_FILENAME);

        if (($login_script_name == 'ucp') ||  ($login_script_name == 'faq'))
        {
        // do nothing
        }    
        else
        
{
        if (($user->data['user_id'] == ANONYMOUS) || ($user->data['is_bot']))
        {
        if(isset($_SERVER['REQUEST_URI']))
        {
        $referer = trim($_SERVER['REQUEST_URI']);
        $referer = explode('/',$referer);
        $referer = array_reverse($referer);
        $referer = $referer[0];
        $referer = str_replace('&', '|', $referer);
        $referer = (($referer !== false) && !empty($referer)) ? "&return=$referer" : "";
        redirect(append_sid("{$phpbb_root_path}ucp.$phpEx", "mode=login$referer")); return;
        }
        else
        
{
        redirect(append_sid("{$phpbb_root_path}ucp.$phpEx", "mode=login")); return;
        }    
        
}
        }
        // Force login before you see anything V2 / BNa / 4seven /  2012    

For more positiv-list entrys take a look at the syntax and the brackets

Code: Select all
    if (($login_script_name == 'ucp') ||  ($login_script_name == 'faq') || ($login_script_name == 'memberlist')) 
Mod-Bot / Service-Team
User avatar
Sekuro

Tiptop

Tiptop
 
Posts: 241
Joined: 11 Feb 2008, 11:49
 
Resolution: 1440x900



Re: [Snippet] Force login before you see anything V2

Postby Sekuro » 23 Aug 2012, 21:03

Mod-Bot / Service-Team
User avatar
Sekuro

Tiptop

Tiptop
 
Posts: 241
Joined: 11 Feb 2008, 11:49
 
Resolution: 1440x900



Return to Snip Cl@ss I

Who is online

Users browsing this forum: No registered users and 2 guests

cron