Avatar billede bellagio Nybegynder
22. marts 2006 - 08:48 Der er 1 kommentar

Åbne redirect i frame?

Jeg har en side bestående af en frame med en menu i venstre side, og en frame i højre side, hvor undesiderne vises.

<frameset cols = "195,*" framespacing="0" frameborder="no" border="0">

    <frame src="page/menu.html" name="menu" marginwidth="0" marginheight="0" scrolling="no" noresize>
    <frame src="page/start.html" name="site" marginwidth="10" marginheight="10" scrolling="auto" noresize>

</frameset>

I menuen er alle linksne lavet således: <a href="info.html" target="site">Info</a>

Mit problem er som følger:
Jeg bruger forskellige bl.a. phpBB debatforum. Hvis en bruger ikke er logget ind, og klikker på fx kalenderen, et topics eller på administrations panelet, bliver man viderestillet til en login side, fx:

.../debat/login.php?redirect=viewforum.php&f=5&start=0 (topic),
.../debat/login.php?redirect=cal_lite.php (kalender)
.../debat/login.php?redirect=admin/index.php&admin=1&sid=3b2cd435e77a45a581d8ecb9ef66e6a4 (admin)

Dette foregår stadigvæk i framen "site", men når man klikker på login knappen åbnes henholdsvis

.../debat/viewforum.php?f=5&start=0
.../debat/cal_lite.php?
.../debat/admin/index.php?admin=1&sid=3b2cd435e77a45a581d8ecb9ef66e6a4

i et hele vinduet! Men andre ord overruler den framsne, så menuen forsvinder :o(.

Er det muligt at ændre på php-koden, så den åbner siden i framen "site"?

Da jeg formoder at "problemet" ligger i login.php har jeg copy/pasted den nedenunder.

Det skal nok lige siges, at jeg ikke kan finde ud af php, så det kan godt være at svaret er meget enkelt... Hvis det er besværligt, giver jeg gerne flere point...
Avatar billede bellagio Nybegynder
22. marts 2006 - 08:49 #1
<?php
/***************************************************************************
*                                login.php
*                            -------------------
*  begin                : Saturday, Feb 13, 2001
*  copyright            : (C) 2001 The phpBB Group
*  email                : support@phpbb.com
*
*  $Id: login.php,v 1.47.2.21 2005/12/29 11:51:13 acydburn Exp $
*
*
***************************************************************************/

/***************************************************************************
*
*  This program is free software; you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation; either version 2 of the License, or
*  (at your option) any later version.
*
***************************************************************************/

//
// Allow people to reach login page if
// board is shut down
//
define("IN_LOGIN", true);

define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

//
// Set page ID for session management
//
$userdata = session_pagestart($user_ip, PAGE_LOGIN);
init_userprefs($userdata);
//
// End session management
//

// session id check
if (!empty($HTTP_POST_VARS['sid']) || !empty($HTTP_GET_VARS['sid']))
{
    $sid = (!empty($HTTP_POST_VARS['sid'])) ? $HTTP_POST_VARS['sid'] : $HTTP_GET_VARS['sid'];
}
else
{
    $sid = '';
}

if( isset($HTTP_POST_VARS['login']) || isset($HTTP_GET_VARS['login']) || isset($HTTP_POST_VARS['logout']) || isset($HTTP_GET_VARS['logout']) )
{
    if( ( isset($HTTP_POST_VARS['login']) || isset($HTTP_GET_VARS['login']) ) && (!$userdata['session_logged_in'] || isset($HTTP_POST_VARS['admin'])) )
    {
        $username = isset($HTTP_POST_VARS['username']) ? phpbb_clean_username($HTTP_POST_VARS['username']) : '';
        $password = isset($HTTP_POST_VARS['password']) ? $HTTP_POST_VARS['password'] : '';

        $sql = "SELECT user_id, username, user_password, user_active, user_level, user_login_tries, user_last_login_try
            FROM " . USERS_TABLE . "
            WHERE username = '" . str_replace("\\'", "''", $username) . "'";
        if ( !($result = $db->sql_query($sql)) )
        {
            message_die(GENERAL_ERROR, 'Error in obtaining userdata', '', __LINE__, __FILE__, $sql);
        }

        if( $row = $db->sql_fetchrow($result) )
        {
            if( $row['user_level'] != ADMIN && $board_config['board_disable'] )
            {
                redirect(append_sid("index.$phpEx", true));
            }
            else
            {
                // If the last login is more than x minutes ago, then reset the login tries/time
                if ($row['user_last_login_try'] && $board_config['login_reset_time'] && $row['user_last_login_try'] < (time() - ($board_config['login_reset_time'] * 60)))
                {
                    $db->sql_query('UPDATE ' . USERS_TABLE . ' SET user_login_tries = 0, user_last_login_try = 0 WHERE user_id = ' . $row['user_id']);
                    $row['user_last_login_try'] = $row['user_login_tries'] = 0;
                }
               
                // Check to see if user is allowed to login again... if his tries are exceeded
                if ($row['user_last_login_try'] && $board_config['login_reset_time'] && $board_config['max_login_attempts'] &&
                    $row['user_last_login_try'] >= (time() - ($board_config['login_reset_time'] * 60)) && $row['user_login_tries'] >= $board_config['max_login_attempts'])
                {
                    message_die(GENERAL_MESSAGE, sprintf($lang['Login_attempts_exceeded'], $board_config['max_login_attempts'], $board_config['login_reset_time']));
                }

                if( md5($password) == $row['user_password'] && $row['user_active'] )
                {
                    $autologin = ( isset($HTTP_POST_VARS['autologin']) ) ? TRUE : 0;

                    $admin = (isset($HTTP_POST_VARS['admin'])) ? 1 : 0;
                    $session_id = session_begin($row['user_id'], $user_ip, PAGE_INDEX, FALSE, $autologin, $admin);

                    // Reset login tries
                    $db->sql_query('UPDATE ' . USERS_TABLE . ' SET user_login_tries = 0, user_last_login_try = 0 WHERE user_id = ' . $row['user_id']);

                    if( $session_id )
                    {
                        $url = ( !empty($HTTP_POST_VARS['redirect']) ) ? str_replace('&amp;', '&', htmlspecialchars($HTTP_POST_VARS['redirect'])) : "index.$phpEx";
                        redirect(append_sid($url, true));
                    }
                    else
                    {
                        message_die(CRITICAL_ERROR, "Couldn't start session : login", "", __LINE__, __FILE__);
                    }
                }
                else
                {
                    // Save login tries and last login
                    if ($row['user_id'] != ANONYMOUS)
                    {
                        $sql = 'UPDATE ' . USERS_TABLE . '
                            SET user_login_tries = user_login_tries + 1, user_last_login_try = ' . time() . '
                            WHERE user_id = ' . $row['user_id'];
                        $db->sql_query($sql);
                    }
                   
                    $redirect = ( !empty($HTTP_POST_VARS['redirect']) ) ? str_replace('&amp;', '&', htmlspecialchars($HTTP_POST_VARS['redirect'])) : '';
                    $redirect = str_replace('?', '&', $redirect);

                    if (strstr(urldecode($redirect), "\n") || strstr(urldecode($redirect), "\r"))
                    {
                        message_die(GENERAL_ERROR, 'Tried to redirect to potentially insecure url.');
                    }

                    $template->assign_vars(array(
                        'META' => "<meta http-equiv=\"refresh\" content=\"3;url=login.$phpEx?redirect=$redirect\">")
                    );

                    $message = $lang['Error_login'] . '<br /><br />' . sprintf($lang['Click_return_login'], "<a href=\"login.$phpEx?redirect=$redirect\">", '</a>') . '<br /><br />' .  sprintf($lang['Click_return_index'], '<a href="' . append_sid("index.$phpEx") . '">', '</a>');

                    message_die(GENERAL_MESSAGE, $message);
                }
            }
        }
        else
        {
            $redirect = ( !empty($HTTP_POST_VARS['redirect']) ) ? str_replace('&amp;', '&', htmlspecialchars($HTTP_POST_VARS['redirect'])) : "";
            $redirect = str_replace("?", "&", $redirect);

            if (strstr(urldecode($redirect), "\n") || strstr(urldecode($redirect), "\r"))
            {
                message_die(GENERAL_ERROR, 'Tried to redirect to potentially insecure url.');
            }

            $template->assign_vars(array(
                'META' => "<meta http-equiv=\"refresh\" content=\"3;url=login.$phpEx?redirect=$redirect\">")
            );

            $message = $lang['Error_login'] . '<br /><br />' . sprintf($lang['Click_return_login'], "<a href=\"login.$phpEx?redirect=$redirect\">", '</a>') . '<br /><br />' .  sprintf($lang['Click_return_index'], '<a href="' . append_sid("index.$phpEx") . '">', '</a>');

            message_die(GENERAL_MESSAGE, $message);
        }
    }
    else if( ( isset($HTTP_GET_VARS['logout']) || isset($HTTP_POST_VARS['logout']) ) && $userdata['session_logged_in'] )
    {
        // session id check
        if ($sid == '' || $sid != $userdata['session_id'])
        {
            message_die(GENERAL_ERROR, 'Invalid_session');
        }

        if( $userdata['session_logged_in'] )
        {
            session_end($userdata['session_id'], $userdata['user_id']);
        }

        if (!empty($HTTP_POST_VARS['redirect']) || !empty($HTTP_GET_VARS['redirect']))
        {
            $url = (!empty($HTTP_POST_VARS['redirect'])) ? htmlspecialchars($HTTP_POST_VARS['redirect']) : htmlspecialchars($HTTP_GET_VARS['redirect']);
            $url = str_replace('&amp;', '&', $url);
            redirect(append_sid($url, true));
        }
        else
        {
            redirect(append_sid("index.$phpEx", true));
        }
    }
    else
    {
        $url = ( !empty($HTTP_POST_VARS['redirect']) ) ? str_replace('&amp;', '&', htmlspecialchars($HTTP_POST_VARS['redirect'])) : "index.$phpEx";
        redirect(append_sid($url, true));
    }
}
else
{
    //
    // Do a full login page dohickey if
    // user not already logged in
    //
    if( !$userdata['session_logged_in'] || (isset($HTTP_GET_VARS['admin']) && $userdata['session_logged_in'] && $userdata['user_level'] == ADMIN))
    {
        $page_title = $lang['Login'];
        include($phpbb_root_path . 'includes/page_header.'.$phpEx);

        $template->set_filenames(array(
            'body' => 'login_body.tpl')
        );

        $forward_page = '';

        if( isset($HTTP_POST_VARS['redirect']) || isset($HTTP_GET_VARS['redirect']) )
        {
            $forward_to = $HTTP_SERVER_VARS['QUERY_STRING'];

            if( preg_match("/^redirect=([a-z0-9\.#\/\?&=\+\-_]+)/si", $forward_to, $forward_matches) )
            {
                $forward_to = ( !empty($forward_matches[3]) ) ? $forward_matches[3] : $forward_matches[1];
                $forward_match = explode('&', $forward_to);

                if(count($forward_match) > 1)
                {
                    for($i = 1; $i < count($forward_match); $i++)
                    {
                        if( !ereg("sid=", $forward_match[$i]) )
                        {
                            if( $forward_page != '' )
                            {
                                $forward_page .= '&';
                            }
                            $forward_page .= $forward_match[$i];
                        }
                    }
                    $forward_page = $forward_match[0] . '?' . $forward_page;
                }
                else
                {
                    $forward_page = $forward_match[0];
                }
            }
        }

        $username = ( $userdata['user_id'] != ANONYMOUS ) ? $userdata['username'] : '';

        $s_hidden_fields = '<input type="hidden" name="redirect" value="' . $forward_page . '" />';
        $s_hidden_fields .= (isset($HTTP_GET_VARS['admin'])) ? '<input type="hidden" name="admin" value="1" />' : '';

        make_jumpbox('viewforum.'.$phpEx);
        $template->assign_vars(array(
            'USERNAME' => $username,

            'L_ENTER_PASSWORD' => (isset($HTTP_GET_VARS['admin'])) ? $lang['Admin_reauthenticate'] : $lang['Enter_password'],
            'L_SEND_PASSWORD' => $lang['Forgotten_password'],

            'U_SEND_PASSWORD' => append_sid("profile.$phpEx?mode=sendpassword"),

            'S_HIDDEN_FIELDS' => $s_hidden_fields)
        );

        $template->pparse('body');

        include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
    }
    else
    {
        redirect(append_sid("index.$phpEx", true));
    }

}

?>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester