Регистрация
Вход через соцсети
Восстановление пароля

Отправка письма админам при регистрации пользователя

Новый топик
13.07.2011, 15:53
Ответить | Цитировать
dekart
DaHost.Ru

Зарегистрирован:
2005-03-26
Сообщений: 76

При регистрации есть два типа пользователей: Тип1 и Тип2.

При регистрации пользователя с Тип1 - должно приходить письмо всем спец.Админам (группа 8), которые его подтвердят.

Код такой:

Код:
";
if ($MODULE_VARS[auth][USER_CONFIRMATION]) {
$message_body = $db->get_var("SELECT Value FROM Auth_Settings WHERE SettingsKey = 'MailRegConfirmText'");
$message_subj = $db->get_var("SELECT Value FROM Auth_Settings WHERE SettingsKey = 'MailRegConfirmSubj'");
$IsHtml = $db->get_var("SELECT Value FROM Auth_Settings WHERE SettingsKey = 'MailRegConfirmIsHtml'");

$message_body = str_replace('%USER_LOGIN', $f_Login, $message_body);
$message_body = str_replace('%CONFIRM_LINK', $ConfirmationLink, $message_body);

$mailer = new CMIMEMail();
if ($IsHtml) $mailer->mailbody('', $message_body);
else $mailer->mailbody($message_body);

$mailer->send($f_Email, $system_env['SpamFromEmail'], $system_env['SpamFromEmail'], $message_subj, $system_env['SpamFromName']);

echo "На ваш почтовый ящик было выслано письмо со ссылкой для подтверждения регистрации.<br>";
}
if ($MODULE_VARS[auth][USER_PREMODERATION]) {
echo "Ваша учетная запись будет активирована после проверки администратора.<br>";
}

if (!$MODULE_VARS[auth][USER_PREMODERATION] && !$MODULE_VARS[auth][USER_CONFIRMATION]) {
echo "Регистрация прошла успешно.";
}

if ($MODULE_VARS['auth']['USER_REG_NOTIFY']) {
$body = "Зарегистрирован новый пользователь: \n\n"
.($f_Login ? "Логин: ".$f_Login."\n" : "")
.($f_ForumName ? "Имя пользователя: ".$f_ForumName."\n" : "")
.($f_TypeReg ? "Тип регистрации: ".$db->get_var("SELECT TypeReg_Name FROM Classificator_TypeReg WHERE TypeReg_ID=$f_TypeReg")."\n" : "")
.($f_Email ? "E-mail: ".$f_Email."\n" : "")
."IP: ".$_SERVER['REMOTE_ADDR'];
if($f_TypeReg==1){
$data=$db->get_results('SELECT `Email` FROM `User` WHERE `PermissionGroup_ID`=8');
$emailString='';
foreach($data as $elem) $emailString.=$elem->Email.',';
rtrim($emailString,',');
}
$mailer = new CMIMEMail();
$mailer->mailbody($body);
$mailer->send($f_TypeReg ? $emailString : $system_env['SpamFromEmail'], $system_env['SpamFromEmail'], ($f_Email ? $f_Email : $system_env['SpamFromEmail']), "Новый пользователь зарегистрирован", $system_env['SpamFromName']);
}
if ($_FILES[f_ForumAvatar][size]!=0 && $_FILES[f_ForumAvatar][type]!='')
{
global $nc_core;
require_once($nc_core->INCLUDE_FOLDER."classes/nc_imagetransform.class.php");
$photo_path = $DOCUMENT_ROOT.nc_file_path('User', $message, 'ForumAvatar', "");
if ($photo_path) nc_ImageTransform::imgResize($photo_path,$photo_path,92,92);
}
echo "


При регистрации пользователя со статусом Тип1 (со статусом Тип2 - нормально) на странице выводится сообщение:

-------------
На ваш почтовый ящик было выслано письмо со ссылкой для подтверждения регистрации.

Warning: Invalid argument supplied for foreach() in /********/netcat/add.php(241) : eval()'d code on line 36
-------------

Пользователи регистрируются, им приходит на почту подтверждение, НО никто из админов не получает письмо о регистрации пользователя.

Помогите, пожалуйста!

dekart
14.07.2011, 12:35
Ответить | Цитировать
DiGGy
DiGGy
DiGGy

Зарегистрирован:
2005-04-04
Сообщений: 1546

Данная ошибка может выскакивать, если запрос "SELECT `Email` FROM `User` WHERE `PermissionGroup_ID`=8" не вернул ни одной записи, поэтому было б более правильно добавить проверочку на наличии записей в массиве $data.

А по хорошему прежде чем использовать какую-нить ф-ию, надо смотреть какие варианты она может вернуть и обрабатывать все эти варианты в последющем своем коде.

Temet nosce...
14.07.2011, 17:56
Ответить | Цитировать
dekart
DaHost.Ru

Зарегистрирован:
2005-03-26
Сообщений: 76

Проблема решена. Спасибо!

dekart
198 196 2011-07-14 17:56:13 11451
Описание проекта