Pagina 1 van 1

Toezenden nieuw wachtwoord

Geplaatst: 12 mei 2005, 17:52
door Php
Ik heb een probleem. Als men het wachtwoord vergeet en men vraagt om een nieuwe, dan is er een fout met het toesturen van email. De fout zit dan in regel 32 van usercp_sendpassword.php

Dit is regel 32:

$email = ( !empty($HTTP_POST_VARS['email']) ) ? trim(strip_tags(htmlspecialchars($HTTP_POST_VARS['email']))) : '';

Code: Selecteer alles

<?php
/***************************************************************************
 *                           usercp_sendpasswd.php
 *                            -------------------
 *   begin                : Saturday, Feb 13, 2001
 *   copyright            : (C) 2001 The phpBB Group
 *   email                : support@phpbb.com
 *
 *   $Id: usercp_sendpasswd.php,v 1.6.2.11 2003/05/03 23:24:03 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;
}

if ( isset($HTTP_POST_VARS['submit']) )
{
	$username = ( !empty($HTTP_POST_VARS['username']) ) ? phpbb_clean_username($HTTP_POST_VARS['username']) : '';
	$email = ( !empty($HTTP_POST_VARS['email']) ) ? trim(strip_tags(htmlspecialchars($HTTP_POST_VARS['email']))) : '';

	$sql = "SELECT user_id, username, user_email, user_active, user_lang 
		FROM " . USERS_TABLE . " 
		WHERE user_email = '" . str_replace("\'", "''", $email) . "' 
			AND username = '" . str_replace("\'", "''", $username) . "'";
	if ( $result = $db->sql_query($sql) )
	{
		if ( $row = $db->sql_fetchrow($result) )
		{
			if ( !$row['user_active'] )
			{
				message_die(GENERAL_MESSAGE, $lang['No_send_account_inactive']);
			}

			$username = $row['username'];
			$user_id = $row['user_id'];

			$user_actkey = gen_rand_string(true);
			$key_len = 54 - strlen($server_url);
			$key_len = ( $str_len > 6 ) ? $key_len : 6;
			$user_actkey = substr($user_actkey, 0, $key_len);
			$user_password = gen_rand_string(false);
			
			$sql = "UPDATE " . USERS_TABLE . " 
				SET user_newpasswd = '" . md5($user_password) . "', user_actkey = '$user_actkey'  
				WHERE user_id = " . $row['user_id'];
			if ( !$db->sql_query($sql) )
			{
				message_die(GENERAL_ERROR, 'Could not update new password information', '', __LINE__, __FILE__, $sql);
			}

			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('user_activate_passwd', $row['user_lang']);
			$emailer->email_address($row['user_email']);
			$emailer->set_subject($lang['New_password_activation']);

			$emailer->assign_vars(array(
				'SITENAME' => $board_config['sitename'], 
				'USERNAME' => $username,
				'PASSWORD' => $user_password,
				'EMAIL_SIG' => (!empty($board_config['board_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)
			);
			$emailer->send();
			$emailer->reset();

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

			$message = $lang['Password_updated'] . '<br /><br />' . sprintf($lang['Click_return_index'],  '<a href="' . append_sid("index.$phpEx") . '">', '</a>');

			message_die(GENERAL_MESSAGE, $message);
		}
		else
		{
			message_die(GENERAL_MESSAGE, $lang['No_email_match']);
		}
	}
	else
	{
		message_die(GENERAL_ERROR, 'Could not obtain user information for sendpassword', '', __LINE__, __FILE__, $sql);
	}
}
else
{
	$username = '';
	$email = '';
}

//
// Output basic page
//
include($phpbb_root_path . 'includes/page_header.'.$phpEx);

$template->set_filenames(array(
	'body' => 'profile_send_pass.tpl')
);
make_jumpbox('viewforum.'.$phpEx);

$template->assign_vars(array(
	'USERNAME' => $username,
	'EMAIL' => $email,

	'L_SEND_PASSWORD' => $lang['Send_password'], 
	'L_ITEMS_REQUIRED' => $lang['Items_required'],
	'L_EMAIL_ADDRESS' => $lang['Email_address'],
	'L_SUBMIT' => $lang['Submit'],
	'L_RESET' => $lang['Reset'],
	
	'S_HIDDEN_FIELDS' => '', 
	'S_PROFILE_ACTION' => append_sid("profile.$phpEx?mode=sendpassword"))
);

$template->pparse('body');

include($phpbb_root_path . 'includes/page_tail.'.$phpEx);

?>

Geplaatst: 12 mei 2005, 18:02
door Luuk
Ik zie daar niets fouts aan... upload eens de originele versie.

Geplaatst: 12 mei 2005, 18:17
door Php
Heb ik gedaan. Precies hetzelfde. Wat ik wel heb, is een autodelete functie van niet postende leden, en die kreeg ik ook maar niet aan de gang. Kan het conflicteren met andere files?

Dit is de exacte foutmelding:

Code: Selecteer alles

Fatal error: Call to undefined function: phpbb_clean_username() in /home/emaatkamp/domains/christen-zijn.nl/public_html/includes/usercp_sendpasswd.php on line 32

Geplaatst: 12 mei 2005, 19:10
door Luuk
Dan is je forumversie (of iig die van functions.php) < 2.0.11. Updaten dus!

Geplaatst: 12 mei 2005, 19:18
door Php
Tja een hacker had mijn forum gedumpt, en toen heb ik met een nieuwe installatie van phpbb 2.015 de installatie gedaan, en mijn oude phpbb 2.10 files gewoon gebruikt. Moet ik dan gewoon weer een nieuwe installatie doen met 2.10?

Want updaten van 2.20 naar 2.15 zal wel lang duren met al die handmatige aanpassingen, dat moet vanwege de vele mods die ik heb.,

Ed

Geplaatst: 12 mei 2005, 19:39
door Php
Ik heb het originele file van de 2.10 versie nu gebruikt, nu werkt het weer.

Geplaatst: 12 mei 2005, 19:44
door ukkepuk
ik zou je toch aanraden om de update van de files te doen!
in die oude files zitten namelijk veel "gaten" en "lekken" in zodat je forum gemakkelijk te hacken is.

Geplaatst: 12 mei 2005, 19:49
door Php
Ik zal het doen, maar volgens mij lopen bij mij versie 2.6 en 10 door elkaar. Alles werkt wel goed ;)

Ik zal op http://www.phpbbhacks.com de code wijzigngen eens doorkijken.