Seite 3 von 3

Verfasst: 05.09.2005 11:54
von Been Told
Hab entdeckt, daß die profile.php bei der Aktivirung usercp_activate.php aufruft. Hier die Datei:

Code: Alles auswählen

<?php
/***************************************************************************
 *                            usercp_activate.php
 *                            -------------------
 *   begin                : Saturday, Feb 13, 2001
 *   copyright            : (C) 2001 The phpBB Group
 *   email                : support@phpbb.com
 *
 *   $Id: usercp_activate.php,v 1.6.2.8 2005/07/19 20:01:16 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.
 *
 *
 ***************************************************************************/

if ( !defined('IN_PHPBB') )
{
	die('Hacking attempt');
	exit;
}

$sql = "SELECT user_active, user_id, username, user_email, user_newpasswd, user_lang, user_actkey 
	FROM " . USERS_TABLE . "
	WHERE user_id = " . intval($HTTP_GET_VARS[POST_USERS_URL]);
if ( !($result = $db->sql_query($sql)) )
{
	message_die(GENERAL_ERROR, 'Could not obtain user information', '', __LINE__, __FILE__, $sql);
}

if ( $row = $db->sql_fetchrow($result) )
{
	if ( $row['user_active'] && trim($row['user_actkey']) == '' )
	{
		$template->assign_vars(array(
			'META' => '<meta http-equiv="refresh" content="10;url=' . append_sid("index.$phpEx") . '">')
		);

		message_die(GENERAL_MESSAGE, $lang['Already_activated']);
	}
	else if ((trim($row['user_actkey']) == trim($HTTP_GET_VARS['act_key'])) && (trim($row['user_actkey']) != ''))
	{
		if (intval($board_config['require_activation']) == USER_ACTIVATION_ADMIN && $userdata['user_level'] != ADMIN)
		{
			message_die(GENERAL_MESSAGE, $lang['Not_Authorised']);
		}

		$sql_update_pass = ( $row['user_newpasswd'] != '' ) ? ", user_password = '" . str_replace("\'", "''", $row['user_newpasswd']) . "', user_newpasswd = ''" : '';

		$sql = "UPDATE " . USERS_TABLE . "
			SET user_active = 1, user_actkey = ''" . $sql_update_pass . " 
			WHERE user_id = " . $row['user_id']; 
		if ( !($result = $db->sql_query($sql)) )
		{
			message_die(GENERAL_ERROR, 'Could not update users table', '', __LINE__, __FILE__, $sql_update);
		}

		if ( intval($board_config['require_activation']) == USER_ACTIVATION_ADMIN && $sql_update_pass == '' )
		{
			include($phpbb_root_path . 'includes/emailer.'.$phpEx);
			$emailer = new emailer($board_config['smtp_delivery']);

			$emailer->from($board_config['board_email']);
			$emailer->replyto($board_config['board_email']);

			$emailer->use_template('admin_welcome_activated', $row['user_lang']);
			$emailer->email_address($row['user_email']);
			$emailer->set_subject($lang['Account_activated_subject']);

			$emailer->assign_vars(array(
				'SITENAME' => $board_config['sitename'], 
				'USERNAME' => $row['username'],
				'PASSWORD' => $password_confirm,
				'EMAIL_SIG' => (!empty($board_config['board_email_sig'])) ? str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']) : '')
			);
			$emailer->send();
			$emailer->reset();

			$template->assign_vars(array(
				'META' => '<meta http-equiv="refresh" content="10;url=' . append_sid("index.$phpEx") . '">')
			);

			message_die(GENERAL_MESSAGE, $lang['Account_active_admin']);
		}
		else
		{
			$template->assign_vars(array(
				'META' => '<meta http-equiv="refresh" content="10;url=' . append_sid("index.$phpEx") . '">')
			);

			$message = ( $sql_update_pass == '' ) ? $lang['Account_active'] : $lang['Password_activated']; 
			message_die(GENERAL_MESSAGE, $message);
		}
	}
	else
	{
		message_die(GENERAL_MESSAGE, $lang['Wrong_activation']);
	}
}
else
{
	message_die(GENERAL_MESSAGE, $lang['No_such_user']);
}

?>
Auf meinem Forum müssen alle neuen accounts vom Admin aktivirt werden. Kann es sein, daß die Fehlermeldung deswegen kommt?
Ich meine spezielle diesen Teil hier:

Code: Alles auswählen

if (intval($board_config['require_activation']) == USER_ACTIVATION_ADMIN && $userdata['user_level'] != ADMIN)
		{
			message_die(GENERAL_MESSAGE, $lang['Not_Authorised']);
		}
Sollte ich das einfach entfernen oder irgendwie ändern?

Verfasst: 05.09.2005 11:55
von Been Told
Markus67 hat geschrieben:Hi ...

hast du bei der Registrierung "Freischaltung durch Admin" aktiviert ?

Markus
Jep.

Verfasst: 05.09.2005 11:56
von Markus67
Been Told hat geschrieben:
Markus67 hat geschrieben:Hi ...

hast du bei der Registrierung "Freischaltung durch Admin" aktiviert ?

Markus
Jep.
Dann kann auch nur der Admin freischalten :wink:
Das ganze funktioniert wenn du "Freischaltung per eMail" aktivierst.

Markus

Verfasst: 05.09.2005 11:57
von Been Told
Ich habe es jetzt eben auch grade gedacht. Das Problem ist aber, daß ich keine Benachrichtigung kriege, wenn jemand sein Passwort vergessen hat und das Feature benutzt. Die kriegen dann nur die Fehlermeldung und fertsch. Die wissen nicht, was sie damit machen sollen und gehen einfach wieder. :(

Verfasst: 05.09.2005 12:12
von Markus67
Hi ...

wenn das PW angefordert wird, wird automatisch der Account auf inaktiv gestellt. Der Link den die User bekommen dient dazu, dass der Account wieder aktiviert wird. Das können die User aber nicht, da die Freischaltung nur durch den Admin erfolgen kann.

Demzufolge musst du dann die User im Adminbereich wieder aktivieren.

Markus

Verfasst: 05.09.2005 12:32
von Been Told
Ja schon klar. Nur ist es halt blöd, daß der Admin davon aber keinen Schimmer hat. Ich habe ja keine benachrichtigung bekommen, daß jemand da sein Passwort vergessen hat und auf inaktiv geschaltet worden ist.
Es ist ja in dem Sinne ein bug, also habe ich es im Bugtracker gemeldet.