• Ресурсы форума переехали на Servahoc.ru

Проблема с отправкой почты пользователям при регистрации.

Iv55555

Участник
При регистрации и восстановлении пароля пользователю не приходит письмо. Поддержка хостинга ссылается на ошибку в форме регистрации. Не могу найти причины почему, прикрепляю файлы регистрации и отправки писем, буду признателен за любую помощь.
<?PHP

$_OPTIMIZATION["title"] = "Регистрация";
$_OPTIMIZATION["description"] = "Регистрация пользователя в системе";
$_OPTIMIZATION["keywords"] = "Регистрация нового участника в системе";
?>
<td valign="top">
<div class="r_block">
<div class="topperss"><span>
<center><h1>Регистрация в проекте</h1></center></span></div>
<BR />
<div class="">
<?PHP

# Регистрация

if(isset($_POST["login"])){

if(isset($_SESSION["captcha"]) AND strtolower($_SESSION["captcha"]) == strtolower($_POST["captcha"])){
unset($_SESSION["captcha"]);

$login = $func->IsLogin($_POST["login"]);
$pass = $func->IsPassword($_POST["pass"]);
$rules = isset($_POST["rules"]) ? true : false;
$time = time();
$ip = $func->UserIP;
$ipregs = $db->Query("SELECT * FROM `db_users_a` WHERE INET_NTOA(db_users_a.ip) = '$ip' ");
$ipregs = $db->NumRows();

$email = $func->IsMail($_POST["email"]);
$referer_id = (isset($_COOKIE["i"]) AND intval($_COOKIE["i"]) > 0 AND intval($_COOKIE["i"]) < 1000000) ? intval($_COOKIE["i"]) : 1;
$referer_name = "";
if($referer_id != 1){
$db->Query("SELECT user FROM db_users_a WHERE id = '$referer_id' LIMIT 1");
if($db->NumRows() > 0){$referer_name = $db->FetchRow();}
else{ $referer_id = 1; $referer_name = "Admin"; }
}else{ $referer_id = 1; $referer_name = "Admin"; }

if($rules){
if($ipregs == 0) {

if($email !== false){

if($login !== false){

if($pass !== false){

if($pass == $_POST["repass"]){

$db->Query("SELECT COUNT(*) FROM db_users_a WHERE user = '$login'");
if($db->FetchRow() == 0){

# Регаем пользователя
# +5 серебра рефереру за рефа

if (empty($referer_name)){

//echo "Пусто, ничего не делаем!";

}

else

{

$db->Query("SELECT referer, referer_id FROM db_users_a WHERE id = '$lid' ");

$ref_bonus = $db->FetchArray();

$user_name = $ref_bonus["referer"];

$ref_id = $ref_bonus["referer_id"];



$db->Query("UPDATE db_users_b SET money_p = money_p +5 WHERE user = '$user_name' AND id = '$ref_id' ");

}
$db->Query("INSERT INTO db_users_a (user, email, pass, referer, referer_id, date_reg, ip)
VALUES ('$login','{$email}','$pass','$referer_name','$referer_id','$time',INET_ATON('$ip'))");

$lid = $db->LastInsert();

$db->Query("INSERT INTO db_users_b (id, user, a_t, last_sbor) VALUES ('$lid','$login','2', '".time()."')");

# Вставляем статистику
# +5 серебра рефереру за рефа

if (empty($referer_name)){

//echo "Пусто, ничего не делаем!";

}

else

{

$db->Query("SELECT referer, referer_id FROM db_users_a WHERE id = '$lid' ");

$ref_bonus = $db->FetchArray();

$user_name = $ref_bonus["referer"];

$ref_id = $ref_bonus["referer_id"];



$db->Query("UPDATE db_users_b SET money_p = money_p +5 WHERE user = '$user_name' AND id = '$ref_id' ");

}
$db->Query("UPDATE db_stats SET all_users = all_users +1 WHERE id = '1'");

echo "<center><b><font color = 'green'>Вы успешно зарегистрировались. Используйте форму слева для входа в аккаунт</font></b></center><BR />";
?></div>
<div class="clr"></div>
<?PHP
return;
}else echo "<center><b><font color = 'red'>Указанный логин уже используется</font></b></center><BR />";

}else echo "<center><b><font color = 'red'>Пароль и повтор пароля не совпадают</font></b></center><BR />";

}else echo "<center><b><font color = 'red'>Пароль заполнен неверно</font></b></center><BR />";

}else echo "<center><b><font color = 'red'>Логин заполнен неверно</font></b></center><BR />";

}else echo "<center><font color = 'red'><b>Email имеет неверный формат</b></font></center>";

}else echo "<center><font color = 'red'><b>Регистрация с этого IP уже производилась</b></font></center>";

}else echo "<center><b><font color = 'red'>Вы не подтвердили правила</font></b></center><BR />";

}else echo "<center><font color = 'red'><b>Символы с картинки введены неверно</b></font></center>";

}


?>


<BR />
<form action="" method="post" onsubmit="ga('send', 'event', 'knopka', 'register');return true;">
<center>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center"> <font style="color: #d7b499;">Ваш псевдоним: </font><font color="#FF0000">*</font></td>
<td align="left" style="padding:3px;">
<input class="login-block_input4" id="reg_1" placeholder="Придумайте логин" pattern="[0-9A-Za-z]{4,10}" required title="Псевдоним должно иметь от 4 до 10 символов (только латинские буквы и цифры)" name="login" class="poi" style="height: 30px;margin-left: 30px;text-align:center;font-size: 14px;" type="text" size="25" maxlength="10" value=""/>
</td>
</tr>


<tr>
<td><div style="margin-top: 10px;"></div></td>
</tr>


<tr>
<td align="center"> <font style="color: #d7b499;">Email: </font><font color="#FF0000">*</font></td>
<td align="left" style="padding:3px;"><input class="login-block_input4" id="reg_2" placeholder="Введите ваш e-mail" required name="email" class="poi" style="height: 30px;margin-left: 30px;text-align:center;font-size: 14px;" type="email" size="25" maxlength="50" value=""/></td>
</tr>
<tr>
<td><div style="margin-top: 10px;"></div></td>
</tr>
<tr>

<td align="center"> <font style="color: #d7b499;">Пароль: </font><font color="#FF0000">*</font></td>
<td align="left" style="padding:3px;"><input class="login-block_input4" id="reg_3" placeholder="Введите пароль" pattern="[0-9A-Za-z]{6,20}" required title="Пароль должно иметь от 6 до 20 символов (только латинские буквы и цифры)" name="pass" class="poi" style="height: 30px;margin-left: 30px;text-align:center;font-size: 14px;" type="password" size="25" maxlength="20" /></td>
</tr>
<tr>
<td><div style="margin-top: 10px;"></div></td>
</tr>
<tr>
<td align="center"> <font style="color: #d7b499;">Пароль еще раз: </font><font color="#FF0000">*</font></td>
<td align="left" style="padding:3px;"><input class="login-block_input4" id="reg_4" placeholder="Повторите пароль" pattern="[0-9A-Za-z]{6,20}" required title="Пароль должно иметь от 6 до 20 символов (только латинские буквы и цифры)" name="repass" class="poi" style="height: 30px;margin-left: 30px;text-align:center; font-size: 14px;" type="password" size="25" maxlength="20" /></td>
</tr>

<tr>
<td><div style="margin-top: 10px;"></div></td>
</tr>

</table>


<center>
<div>


<label><input name="rules" style="cursor: pointer; width: 15px; height: 17px; vertical-align: -4px;" required type="checkbox"><font style="color: #d7b499;"><b style="cursor: pointer;"> С </b><a href="/rules" target="_blank" class="stn">правилами</a> <font><span style="cursor: pointer;">&nbsp;проекта ознакомлен(а) и принимаю: </span></label>

<table width="330" border="0" align="center">
<tbody><tr>
<td align="center"></td>
</tr>

<div>


<center>
<div class="silver-bkloxum">
<center> <div style="width: 165px;height: 60px;cursor: pointer;">
<a onclick="ResetCaptcha(this);"><img style="cursor: pointer;" src="/captcha.php?rnd=<?=rand(1,10000); ?>" border="0"></a>
</div> </center>

<div style="margin-top: 10px;"></div>

<center> <font style="color: #d7b499;">Введите символы с картинки </font><font color="#FF0000">*</font><input class="login-block_input4" id="reg_6" placeholder="Цифры с картинки" class="poi" style="height: 30px;margin-left: 30px;text-align:center;font-size: 14px;" name="captcha" type="text" size="25" required maxlength="50"> </font></center><font>
</font></div><font>
</font></center><font>
</font></div>
<div style="margin-top: 10px;"></div>


</tbody></table>
<center><input name="registr" type="submit" class="bat" value="Отправить"></center>
</form>

</div>
<div class="clr"></div>
<?php
class isender{

var $Hosts = ".ru"

/*======================================================================*\
Function: __construct
Descriiption: Конструктор класса
\*======================================================================*/
function __construct(){

$this->Hosts = str_replace("www.","",$_SERVER['HTTPS_HOST']);

}

/*======================================================================*\
Function: SendRegKey
Descriiption: Отправляет регистрационный ключ
\*======================================================================*/
function SendRegKey($email, $key){

$text = "На ваш Email была запрошена ссылка для регистрации в игре \"".$this->Hosts."\"<BR />";
$text.= "Если вы не запрашивали ссылку, просто проигнорируйте это сообщение. <BR /><BR />";
$text.= "Ссылка для регистрации: <a href='http://".$this->Hosts."/signup/key/{$key}'>";
$text.= "http://".$this->Hosts."/signup/key/{$key}</a>";
$subject = "Регистрация в игре \"".$this->Hosts."\"";

return $this->SendMail($email, $subject, $text);

}

/*======================================================================*\
Function: RecoveryPassword
Descriiption: Восстановление пароля
\*======================================================================*/
function RecoveryPassword($user, $pass, $email){

$text = "Уважаемый, {$user}! <BR />";
$text.= "Ваш пароль в игре <a href='http://".$this->Hosts."/'>Камикадзе 2</a> был изменен<BR />";
$text.= "<b>Ваш новый Пароль:</b> {$pass}<BR />";
$subject = "Пароль изменен! - \"".$this->Hosts."\"";

return $this->SendMail($email, $subject, $text);

}

/*======================================================================*\
Function: SendAfterReg
Descriiption: Отправляет данные после регистрации
\*======================================================================*/
function SendAfterReg($user, $pass, $email){

$text = "Благодарим вас за регистрацию в игре \"".$this->Hosts."\"<BR />";
$text.= "Ваши данные для входа в личный кабинет пользователя: <BR />";
$text.= "<b>Логин:</b> {$user}<BR />";
$text.= "<b>Пароль:</b> {$pass}<BR />";
$text.= "Ссылка для входа в кабинет: <a href='http://".$this->Hosts."/'>http://".$this->Hosts."/</a>";
$subject = "Завершение регистрации в системе \"".$this->Hosts."\"";

return $this->SendMail($email, $subject, $text);

/*======================================================================*\
Function: SetNewPassword
Descriiption: Отправляет данные после смены пароля
\*======================================================================*/
function SetNewPassword($user, $pass, $email){

$text = "В настройках вашего аккаунта был изменен пароль<BR />";
$text.= "Ваши новые данные для входа в личный кабинет пользователя: <BR />";
$text.= "<b>Логин:</b> {$user}<BR />";
$text.= "<b>Новый пароль:</b> {$pass}<BR />";
$text.= "Ссылка для входа в кабинет: <a href='http://".$this->Hosts."/'>http://".$this->Hosts."/</a>";
$subject = "Смена пароля в системе \"".$this->Hosts."\"";

return $this->SendMail($email, $subject, $text);

}


/*======================================================================*\
Function: Headers
Descriiption: Создание заголовков письма
\*======================================================================*/
function Headers(){

$headers = "MIME-Version: 1.0\r\n";
$headers.= "Content-type: text/html; charset=Windows-1251\r\n";
$headers.= "Date: ".date("m.d.Y H:i:s")."\r\n";
$headers.= "From: ".$this->Hosts." <support@".$this->Hosts."> \r\n";

return $headers;

}

/*======================================================================*\
Function: SendMail
Descriiption: Отправитель
\*======================================================================*/
function SendMail($recipient, $subject, $message){

$message .= "<br><br>
<small>Пожалуйста, не отвечайте на данное письмо. Данный почтовый адрес не может быть использован для связи с нами.
Если у вас есть вопросы, обращайтесь в support@cash-game.net</small>";
return (mail($recipient, $subject, $message, $this->Headers())) ? true : false;

}



}
?>
 

pligin

Команда форума
Администратор
В файле регистрации нет функции отправки письма.
Добавь после
PHP:
$db->Query("UPDATE db_stats SET all_users = all_users +1 WHERE id = '1'");
следующий код
PHP:
$sender = new isender();
$sender->SendAfterReg($login, $pass, $email);
 

Iv55555

Участник
Спасибо что подсказали, но после добавления данного кода письма так и не отправляются. Может есть еще какие либо варианты
 

pligin

Команда форума
Администратор
Спасибо что подсказали, но после добавления данного кода письма так и не отправляются. Может есть еще какие либо варианты
у хостера запрещено использование php mail(). я всегда делаю через smtp - все всегда отправляется.
можешь проверить на https://seoserf.xyz/
 
Сверху