Seite 1 von 1

Redirect MOD

Verfasst: 15.08.2003 20:33
von cloud7
Hi All!

Wenn man bei PHPBB nach dem registrieren, einloggen usw. den parameter $redirect mitgibt, wird der entsprechende pfad innerhalb des PHBB Forums angewählt... Ich suche nun eine erweiterte möglichkeit, nämlich dass man damit innherhalb der ganzen seite redirecten kann (und PHPBB dann auch keine probleme bekommt *g*)

Hintergrund ist der, dass ich so auf einer beliebigen Seite ein "Registrier Formular" machen könnte, da ich aus bequemheitsgründen will, dass der user vor einem "member bereich" nach dem einloggen gleich wieder auf der ursprünglichen seite ist und nicht im forum ladet...

hoffentlich kann mir jemand helfen, da ich sonst nebst PHPBB noch ein registrier script schreiben müsste... :-(

Verfasst: 15.08.2003 20:52
von andreasOymann
Vielleicht sowas?

Code: Alles auswählen

##############################################################
## MOD Title: Smart Log In Redirect
## MOD Author: Smartor < smartor_xp@hotmail.com > (Hoang Ngoc Tu) http://smartor.is-root.com
## MOD Description:	This MOD will redirect user to the page when he
##					clicked "log in.out" after logging in successfully
##					It can bring much more convenience to your surfing experience :)
## MOD Version: 1.0.1
##
## Installation Level: easy
## Installation Time: 1 Minutes
## Files To Edit: 2
##		includes/page_header.php
##		includes/functions.php
##
## Included Files: N/A
##############################################################
## For Security Purposes, Please Check: http://www.phpbb.com/mods/downloads/ for the
## latest version of this MOD. Downloading this MOD from other sites could cause malicious code
## to enter into your phpBB Forum. As such, phpBB will not offer support for MOD's not offered
## in our MOD-Database, located at: http://www.phpbb.com/mods/downloads/
##############################################################
## Author Notes:
##
##############################################################
##
## Revision History:
##
## v1.0.1
##	- Did not redirect if user on profile.php, login.php
## v1.0.0
##	- Initial Release and Final.
##
#################################################################
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD
##############################################################

#
#-----[ OPEN ]--------------------------------------------
#
includes/page_header.php

#
#-----[ FIND ]--------------------------------------------
#
if ( $userdata['session_logged_in'] )
{
	$u_login_logout = 'login.'.$phpEx.'?logout=true&sid=' . $userdata['session_id'];
	$l_login_logout = $lang['Logout'] . ' [ ' . $userdata['username'] . ' ]';
}
else
{
	$u_login_logout = 'login.'.$phpEx;
	$l_login_logout = $lang['Login'];
}


#
#-----[ REPLACE WITH ]------------------------------------
#
if ( $userdata['session_logged_in'] )
{
	$u_login_logout = 'login.'.$phpEx.'?logout=true&sid=' . $userdata['session_id'];
	$l_login_logout = $lang['Logout'] . ' [ ' . $userdata['username'] . ' ]';
}
else
{
	$smart_redirect = strrchr($HTTP_SERVER_VARS['PHP_SELF'], '/');
	$smart_redirect = substr($smart_redirect, 1, strlen($smart_redirect));

	if( ($smart_redirect == ('profile.'.$phpEx)) or ($smart_redirect == ('login.'.$phpEx)) )
	{
		$smart_redirect = '';
	}

	if( isset($HTTP_GET_VARS) and !empty($smart_redirect) )
	{		
		$smart_get_keys = array_keys($HTTP_GET_VARS);

		for ($i = 0; $i < count($HTTP_GET_VARS); $i++)
		{
			if ($smart_get_keys[$i] != 'sid')
			{
				$smart_redirect .= '&' . $smart_get_keys[$i] . '=' . $HTTP_GET_VARS[$smart_get_keys[$i]];
			}
		}
	}

	$u_login_logout = 'login.' . $phpEx;
	$u_login_logout .= (!empty($smart_redirect)) ? '?redirect=' . $smart_redirect : '';
	$l_login_logout = $lang['Login'];
}


# This step is only needed for phpBB 2.0.4
# It's just trying to fix a bug of phpBB 2.0.4, which may affect this mod
#-----[ OPEN ]----------------------------------------
#
includes/funtions.php

#
#-----[ FIND ]----------------------------------------
#
function redirect($url)
{
	global $db, $board_config;

	if (!empty($db))
	{
		$db->sql_close();
	}

	$server_protocol = ($board_config['cookie_secure']) ? 'https://' : 'http://';
	$server_name = preg_replace('#^\/?(.*?)\/?$#', '\1', trim($board_config['server_name']));
	$server_port = ($board_config['server_port'] <> 80) ? ':' . trim($board_config['server_port']) : '';
	$script_name = preg_replace('#^\/?(.*?)\/?$#', '\1', trim($board_config['script_path']));
	$script_name = ($script_name == '') ? $script_name : '/' . $script_name;
	$url = preg_replace('#^\/?(.*?)\/?$#', '/\1', trim($url));


#
#-----[ AFTER, ADD ]----------------------------------
#
	$url = str_replace('&', '&', $url);

#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM
[/quote]

Verfasst: 15.08.2003 21:32
von cloud7
hmm, gillt das nur für den login dialog oder auch beim registrieren?
Ausserdem bräucht ich noch nen hack um die passwortbestätigung auszuschalten, also dass man zum registieren nur benutername, email und einmal(!) ein passwort eingeben muss...

Hat das jemand?

Verfasst: 15.08.2003 22:00
von andreasOymann
Das obige gilt nur beim Login!

Schau dir mal den Bereich in der /includes/usercp_register.php an:

Code: Alles auswählen

if ( isset($HTTP_POST_VARS['submit']) )
{
        include($phpbb_root_path . 'includes/usercp_avatar.'.$phpEx);

        $passwd_sql = '';
        if ( $mode == 'editprofile' )
        {
                if ( $user_id != $userdata['user_id'] )
                {
                        $error = TRUE;
                        $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Wrong_Profile'];
                }
        }
        else if ( $mode == 'register' )
        {
                if ( empty($username) || empty($new_password) || empty($password_confirm) || empty($email) )
                {
                        $error = TRUE;
                        $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Fields_empty'];
                }
        }

        $passwd_sql = '';
        if ( !empty($new_password) && !empty($password_confirm) )
        {
                if ( $new_password != $password_confirm )
                {
                        $error = TRUE;
                        $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Password_mismatch'];
                }
                else if ( strlen($new_password) > 32 )
                {
                        $error = TRUE;
                        $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Password_long'];
                }
                else
                {
                        if ( $mode == 'editprofile' )
                        {
                                $sql = "SELECT user_password
                                        FROM " . USERS_TABLE . "
                                        WHERE user_id = $user_id";
                                if ( !($result = $db->sql_query($sql)) )
                                {
                                        message_die(GENERAL_ERROR, 'Could not obtain user_password information', '', __LINE__, __FILE__, $sql);
                                }

                                $row = $db->sql_fetchrow($result);

                                if ( $row['user_password'] != md5($cur_password) )
                                {
                                        $error = TRUE;
                                        $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Current_password_mismatch'];
                                }
                        }

                        if ( !$error )
                        {
                                $new_password = md5($new_password);
                                $passwd_sql = "user_password = '$new_password', ";
                        }
                }
        }
        else if ( ( empty($new_password) && !empty($password_confirm) ) || ( !empty($new_password) && empty($password_confirm) ) )
        {
                $error = TRUE;
                $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Password_mismatch'];
        }
ersetze das mal mit dem:

Code: Alles auswählen

if ( isset($HTTP_POST_VARS['submit']) )
{
        include($phpbb_root_path . 'includes/usercp_avatar.'.$phpEx);

        $passwd_sql = '';
        if ( $mode == 'editprofile' )
        {
                if ( $user_id != $userdata['user_id'] )
                {
                        $error = TRUE;
                        $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Wrong_Profile'];
                }
        }
        else if ( $mode == 'register' )
        {
                if ( empty($username) || empty($new_password) || empty($email) )
                {
                        $error = TRUE;
                        $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Fields_empty'];
                }
        }

        $passwd_sql = '';
        if ( !empty($new_password))
        {
                if ( strlen($new_password) > 32 )
                {
                        $error = TRUE;
                        $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Password_long'];
                }
                else
                {
                        if ( $mode == 'editprofile' )
                        {
                                $sql = "SELECT user_password
                                        FROM " . USERS_TABLE . "
                                        WHERE user_id = $user_id";
                                if ( !($result = $db->sql_query($sql)) )
                                {
                                        message_die(GENERAL_ERROR, 'Could not obtain user_password information', '', __LINE__, __FILE__, $sql);
                                }

                                $row = $db->sql_fetchrow($result);

                                if ( $row['user_password'] != md5($cur_password) )
                                {
                                        $error = TRUE;
                                        $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Current_password_mismatch'];
                                }
                        }

                        if ( !$error )
                        {
                                $new_password = md5($new_password);
                                $passwd_sql = "user_password = '$new_password', ";
                        }
                }
        }

Verfasst: 15.08.2003 22:15
von andreasOymann
und in der gleichen Datei musst du hier:

Code: Alles auswählen

                        if( $coppa )
                        {
                                $emailer->assign_vars(array(
                                        'SITENAME' => $board_config['sitename'],
                                        'WELCOME_MSG' => sprintf($lang['Welcome_subject'], $board_config['sitename']),
                                        'USERNAME' => $username,
                                        'PASSWORD' => $password_confirm,
                                        'EMAIL_SIG' => str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']),

                                        'FAX_INFO' => $board_config['coppa_fax'],
                                        'MAIL_INFO' => $board_config['coppa_mail'],
                                        'EMAIL_ADDRESS' => $email,
                                        'ICQ' => $icq,
                                        'AIM' => $aim,
                                        'YIM' => $yim,
                                        'MSN' => $msn,
                                        'WEB_SITE' => $website,
                                        'FROM' => $location,
                                        'OCC' => $occupation,
                                        'INTERESTS' => $interests,
                                        'SITENAME' => $board_config['sitename']));
                        }
                        else
                        {
                                $emailer->assign_vars(array(
                                        'SITENAME' => $board_config['sitename'],
                                        'WELCOME_MSG' => sprintf($lang['Welcome_subject'], $board_config['sitename']),
                                        'USERNAME' => $username,
                                        'PASSWORD' => $password_confirm,
                                        'EMAIL_SIG' => str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']),

                                        'U_ACTIVATE' => $server_url . '?mode=activate&' . POST_USERS_URL . '=' . $user_id . '&act_key=' . $user_actkey)
                                );
                        }
auch noch was ändern: ersetze

Code: Alles auswählen

'PASSWORD' => $password_confirm
mit

Code: Alles auswählen

'PASSWORD' => $new_password