Короче так. В файле setmembers.php примерно на 95 строке найди строку:
CODE:$inuser['mail'] = strtolower($vars['emailaddress']);
И удали ее совсем.
Далее примерно на 132 строке найди такой код:
CODE: $filetoopen = $exbb['home_path'].'members/'.$user_id.'.php';
save_file($filetoopen,$inuser);
if ($newname) {
$filetoopen = $exbb['home_path'].'data/users.php';
$allusers = get_file($filetoopen);
$allusers[$user_id]['n'] = preg_replace ($lang['search'], $lang['replace'], $inuser['name']);
$allusers[$user_id]['m'] = $inuser['mail'];
save_file($filetoopen,$allusers);
unset($allusers);
}
if (!empty($password) || $newname) {
$time = date("d-m-Y H:i:s",time());
$inuser['name'] = str_replace( ''', "'" , $inuser['name'] );
$inuser['name'] = str_replace( '"', "\"" , $inuser['name'] );
include('./admin/email_newpass.tpl');
sendmail($exbb['boardname'],$exbb['adminemail'],$email,$lang['Notify_by_email'],$inuser['mail']);
}
И замени его на этот:
CODE: $newemail =($inuser['mail'] != strtolower($vars['emailaddress']))? TRUE:FALSE;
$inuser['mail'] = strtolower($vars['emailaddress']);
$filetoopen = $exbb['home_path'].'members/'.$user_id.'.php';
save_file($filetoopen,$inuser);
$filetoopen = $exbb['home_path'].'data/users.php';
$allusers = get_file($filetoopen);
if ($newname) {
$allusers[$user_id]['n'] = preg_replace ($lang['search'], $lang['replace'], $inuser['name']);
$allusers[$user_id]['m'] = $inuser['mail'];
save_file($filetoopen,$allusers);
} elseif($newemail == TRUE) {
$allusers[$user_id]['m'] = $inuser['mail'];
save_file($filetoopen,$allusers);
}
unset($allusers);
if (!empty($password) || $newname || $newemail) {
$time = date("d-m-Y H:i:s",time());
$inuser['name'] = str_replace( ''', "'" , $inuser['name'] );
$inuser['name'] = str_replace( '"', "\"" , $inuser['name'] );
include('./admin/email_newpass.tpl');
sendmail($exbb['boardname'],$exbb['adminemail'],$email,$lang['Notify_by_email'],$inuser['mail']);
}
Дело обстояло так:
Если юзер менял в своем профиле e-mail, то оно прописывалось везде где нужно. Со сменой e-mail'a автоматически сменяется и пароль юзера.
Новые данные отправляются по новому e-mail'у. Но если почтовый сервер этого e-mail'а не принимает письма с сервера на котором стоит форум, то письма естевственно не доходят.
Далее админ форума идет в админку и меняет юзеру e-mail. После сохранения профиля юзера e-mail перезаписывается только в файле данных этого юзера. А вот файле где хранится список всех юзеров, их имена и e-mail'ы, перезапись не происходит.
В итоге когда пользователь запрашивает свой пароль через систему напоминания пароля письмо опять уходит по старому e-mail'у. И как следствие юзер опять не получает пароля.
Выше приведенные изменения исправляют этот глюк. Даже при смене только e-mail'a юзеру будет отправляться его пароль и логин на новый и правильный адрес. И конечно же везде где нужно этот email будет изменен. |