Регистрация с подтверждением почты

Что нужно обновить в скрипте регистрации?

  • Нужен платный хостинг?

    Голосов: 2 100,0%
  • Нужно обновить скрипт?

    Голосов: 1 50,0%

  • Всего проголосовало
    2
Вячеслав
Местный
Сообщения
229
Реакции
21
Что нужно обновить в скрипте регистрации чтобы письмо моментально приходило? Регистрация с подтверждением почты и восстановление не работает вообще, когда я скачал оригинал движка.

Вот оригинал с защитой по ип:
PHP:
<?PHP
$_OPTIMIZATION["title"] = "Регистрация";
$_OPTIMIZATION["description"] = "Регистрация пользователя в системе";
$_OPTIMIZATION["keywords"] = "Регистрация нового участника в системе";

if(isset($_SESSION["user_id"])){ Header("Location: /account"); return; }


if(!isset($_GET["key"])){


?>
<div class="s-bk-lf">
    <div class="acc-title">Регистрация</div>
</div>
<div class="silver-bk"><div class="clr"></div>  
              
<p>Укажите Ваш Email, на него будет выслана ссылка для регистрации.</p>


<?PHP

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

        if(isset($_SESSION["captcha"]) AND strtolower($_SESSION["captcha"]) == strtolower($_POST["captcha"])){
      
        unset($_SESSION["captcha"]);
      
        $email = $func->IsMail($_POST["email"]);
        $referer_id = (isset($_COOKIE["i"]) AND intval($_COOKIE["i"]) > 0 AND intval($_COOKIE["i"]) < 1000000) ? intval($_COOKIE["i"]) : 1;
        $ttime = time();
        $tidex = time() - 60*15;
      
            if($email !== false){
          
            $db->Query("DELETE FROM db_regkey WHERE date_del < '".$ttime."' OR (date_add < '".$tidex."' AND email = '$email')");
            $db->Query("SELECT COUNT(*) FROM db_regkey WHERE email = '$email'");
          
                if($db->FetchRow() == 0){
              
                    $db->Query("SELECT COUNT(*) FROM db_users_a WHERE email = '$email'");
                  
                    if($db->FetchRow() == 0){
                  
                  
                        # Узнаем реферера
                        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 = "player1"; }
                      
                        }else{ $referer_id = 1; $referer_name = "player1"; }
                      
                      
                        # Заносим запись в reg_key
                        $td = $ttime + 60*60;
                        $db->Query("INSERT INTO db_regkey (email, referer_id, referer_name, date_add, date_del)
                        VALUES ('$email','$referer_id','$referer_name','$ttime','$td')");
                      
                        $lid = $db->LastInsert();
                        $reg_key = $lid."-".md5($lid."_rfs_".$lid);
                      
                        # Отправляем на почту
                        $sender = new isender;
                        $sender -> SendRegKey($email, $reg_key);
                      
                        echo "<center><font color = 'green'><b>Указанный Email была отправлена ссылка для регистрации</b></font></center>";
                        ?></div>
                        <div class="clr"></div>  
                        <?PHP
                        return;
                      
                    }else echo "<center><font color = 'red'><b>Указанный Email уже зарегистрирован в системе</b></font></center>";
                  
                }else echo "<center><font color = 'red'><b>За последние 15 минут Вы уже запрашивали ссылку для регистрации</b></font></center>";
          
            }else echo "<center><font color = 'red'><b>Email имеет неверный формат</b></font></center>";
      
        }else echo "<center><font color = 'red'><b>Символы с картинки введены неверно</b></font></center>";

    }
?>
<BR />
<form action="" method="post">
<table width="500" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td align="left" width="250">Email (На него вышлем ссылку):</td>
    <td align="left" width="250"><input name="email" type="text" size="25" maxlength="50" value="<?=(isset($_POST["email"])) ? $_POST["email"] : false; ?>"/></td>
  </tr>
  <tr>
    <td align="left" width="250" style="padding-top:20px;">
    <a href="https://servahoc.ru/redirect.php?url=#" onclick="ResetCaptcha(this);"><img src="/captcha.php?rnd=<?=rand(1,10000); ?>"  border="0" style="margin:0;"/></a>
    </td>
    <td align="left" width="250" style="padding-top:20px;">Введите символы с картинки<input name="captcha" type="text" size="25" maxlength="50" /></td>
  </tr>
  <tr>
    <td colspan="2" align="center"><BR /><input type="submit" value="Выслать ссылку" class="button_0" style="height: 30px;"></td>
  </tr>
</table>

</form>
<BR />
</div>
<div class="clr"></div>  
<?PHP

return;
}

# Регистрация
$_GET["key"] = (string) $_GET["key"];

$token_data = explode('-', $_GET["key"]);

$token_id = intval($token_data[0]);
$token_hash = (string) $token_data[1];
  
    if(strlen($token_hash) != 32){ echo "<center><b><font color = 'red'>Ссылка для регистрации не действительна :(</font></b></center><BR />"; return; }
  
    $tkey = md5($token_id."_rfs_".$token_id);
    if($token_hash != $tkey){ echo "<center><b><font color = 'red'>Ссылка для регистрации не действительна :(</font></b></center><BR />"; return; }
  
    $db->Query("SELECT * FROM db_regkey WHERE id = '$token_id' LIMIT 1");
    if($db->NumRows() != 1){ echo "<center><b><font color = 'red'>Ссылка для регистрации не действительна :(</font></b></center><BR />"; return; }
  
    $data_t = $db->FetchArray();
    $db->FreeMemory();
  
?>
<div class="s-bk-lf">
    <div class="acc-title">Регистрация</div>
</div>
<div class="silver-bk"><div class="clr"></div>  
<?PHP
# Защита от мультиаккаунтов
$ip = $_SERVER["REMOTE_ADDR"];
$db->Query("SELECT COUNT(*) FROM db_users_a WHERE ip = '$ip'");
if($db->FetchRow() == 0){
  
    # Регистрация
    if(isset($_POST["login"])){
  
    $login = $func->IsLogin($_POST["login"]);
    $pass = $func->IsPassword($_POST["pass"]);
    $rules = isset($_POST["rules"]) ? true : false;
    $time = time();
    $ip = $func->UserIP;
  
    $referer_id = $data_t["referer_id"];
    $referer_name = $data_t["referer_name"];
    $email = $data_t["email"];
  
        if($rules){
      
            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){
                      
                        # Регаем пользователя
                        $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) VALUES ('$lid','$login')");
                      
                        # Вставляем статистику
                        $db->Query("UPDATE db_stats SET all_users = all_users +1 WHERE id = '1'");
                      
                        # Удаляем рег кей
                        $db->Query("DELETE FROM db_regkey WHERE email = '$email' OR id = '$token_id'");
                      
                        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><b><font color = 'red'>Логин заполнен неверно</font></b></center><BR />";
      
        }else echo "<center><b><font color = 'red'>Вы не подтвердили правила</font></b></center><BR />";
  
    }
  
  
?>


<BR />
<form action="" method="post">
<table width="500" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td align="left" style="padding:3px;">Ваш псевдоним: <font color="#FF0000">*</font></td>
    <td align="left" style="padding:3px;"><input name="login" type="text" size="25" maxlength="10" value="<?=(isset($_POST["login"])) ? $_POST["login"] : false; ?>"/></td>
  </tr>
  <tr>
    <td colspan="2" align="left" style="padding:3px;">Поле псевдоним должно иметь от 4 до 10 символов (только англ. символы).</td>
    </tr>

  <tr>
    <td colspan="2" align="left">&nbsp;</td>
    </tr>
  <tr>
    <td align="left" style="padding:3px;">Пароль: <font color="#FF0000">*</font></td>
    <td align="left" style="padding:3px;"><input name="pass" type="password" size="25" maxlength="20" /></td>
  </tr>
  <tr>
    <td colspan="2" align="left" style="padding:3px;">Поле Пароль должно иметь от 6 до 20 символов (только англ. символы).</td>
    </tr>
  <tr>
    <td align="left" style="padding:3px;">Пароль еще раз: <font color="#FF0000">*</font></td>
    <td align="left" style="padding:3px;"><input name="repass" type="password" size="25" maxlength="20" /></td>
  </tr>
  <tr>
    <td colspan="2" align="left" style="padding:3px;">Пароли должны совпадать.</td>
    </tr>
  <tr>
    <td align="left" style="padding:3px;">Вас пригласил:</td>
    <td align="left" style="padding:3px;">[ID: <?=$data_t["referer_id"];?>] <?=$data_t["referer_name"];?></td>
  </tr>
  <tr>
    <td colspan="2" align="left">&nbsp;</td>
  </tr>
  <tr>
    <td colspan="2" align="left" style="padding:3px;">
    С <a href="https://servahoc.ru/redirect.php?url=/rules" target="_blank" class="stn">правилами</a> проекта ознакомлен(а) и принимаю: <input name="rules" type="checkbox" /></td>
  </tr>
  <tr>
    <td colspan="2" align="left">&nbsp;</td>
  </tr>
  <tr>
    <td colspan="2" align="center" style="padding:3px;"><input name="registr" type="submit" value="Зарегистрироваться" style="height: 30px;"></td>
  </tr>
</table>
</form>

</div>
<div class="clr"></div>
 
AriCosmo
Участник
Сообщения
515
Реакции
115
Skype
А ты хотел, классы не рабочие)
 
skroliks
PHP, MySQL, CSS
Участник
Сообщения
280
Реакции
46
Вячеслав написал(а):
Что нужно обновить в скрипте регистрации чтобы письмо моментально приходило? Регистрация с подтверждением почты и восстановление не работает вообще, когда я скачал оригинал движка.

Вот оригинал с защитой по ип:

<?PHP
$_OPTIMIZATION["title"] = "Регистрация";
$_OPTIMIZATION["description"] = "Регистрация пользователя в системе";
$_OPTIMIZATION["keywords"] = "Регистрация нового участника в системе";

if(isset($_SESSION["user_id"])){ Header("Location: /account"); return; }


if(!isset($_GET["key"])){


?>
<div class="s-bk-lf">
<div class="acc-title">Регистрация</div>
</div>
<div class="silver-bk"><div class="clr"></div>

<p>Укажите Ваш Email, на него будет выслана ссылка для регистрации.</p>


<?PHP

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

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

unset($_SESSION["captcha"]);

$email = $func->IsMail($_POST["email"]);
$referer_id = (isset($_COOKIE["i"]) AND intval($_COOKIE["i"]) > 0 AND intval($_COOKIE["i"]) < 1000000) ? intval($_COOKIE["i"]) : 1;
$ttime = time();
$tidex = time() - 60*15;

if($email !== false){

$db->Query("DELETE FROM db_regkey WHERE date_del < '".$ttime."' OR (date_add < '".$tidex."' AND email = '$email')");
$db->Query("SELECT COUNT(*) FROM db_regkey WHERE email = '$email'");

if($db->FetchRow() == 0){

$db->Query("SELECT COUNT(*) FROM db_users_a WHERE email = '$email'");

if($db->FetchRow() == 0){


# Узнаем реферера
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 = "player1"; }

}else{ $referer_id = 1; $referer_name = "player1"; }


# Заносим запись в reg_key
$td = $ttime + 60*60;
$db->Query("INSERT INTO db_regkey (email, referer_id, referer_name, date_add, date_del)
VALUES ('$email','$referer_id','$referer_name','$ttime','$td')");

$lid = $db->LastInsert();
$reg_key = $lid."-".md5($lid."_rfs_".$lid);

# Отправляем на почту
$sender = new isender;
$sender -> SendRegKey($email, $reg_key);

echo "<center><font color = 'green'><b>Указанный Email была отправлена ссылка для регистрации</b></font></center>";
?></div>
<div class="clr"></div>
<?PHP
return;

}else echo "<center><font color = 'red'><b>Указанный Email уже зарегистрирован в системе</b></font></center>";

}else echo "<center><font color = 'red'><b>За последние 15 минут Вы уже запрашивали ссылку для регистрации</b></font></center>";

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

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

}
?>
<BR />
<form action="" method="post">
<table width="500" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="left" width="250">Email (На него вышлем ссылку):</td>
<td align="left" width="250"><input name="email" type="text" size="25" maxlength="50" value="<?=(isset($_POST["email"])) ? $_POST["email"] : false; ?>"/></td>
</tr>
<tr>
<td align="left" width="250" style="padding-top:20px;">
<a href="https://servahoc.ru/redirect.php?url=#" onclick="ResetCaptcha(this);"><img src="/captcha.php?rnd=<?=rand(1,10000); ?>" border="0" style="margin:0;"/></a>
</td>
<td align="left" width="250" style="padding-top:20px;">Введите символы с картинки<input name="captcha" type="text" size="25" maxlength="50" /></td>
</tr>
<tr>
<td colspan="2" align="center"><BR /><input type="submit" value="Выслать ссылку" class="button_0" style="height: 30px;"></td>
</tr>
</table>

</form>
<BR />
</div>
<div class="clr"></div>
<?PHP

return;
}

# Регистрация
$_GET["key"] = (string) $_GET["key"];

$token_data = explode('-', $_GET["key"]);

$token_id = intval($token_data[0]);
$token_hash = (string) $token_data[1];

if(strlen($token_hash) != 32){ echo "<center><b><font color = 'red'>Ссылка для регистрации не действительна :(</font></b></center><BR />"; return; }

$tkey = md5($token_id."_rfs_".$token_id);
if($token_hash != $tkey){ echo "<center><b><font color = 'red'>Ссылка для регистрации не действительна :(</font></b></center><BR />"; return; }

$db->Query("SELECT * FROM db_regkey WHERE id = '$token_id' LIMIT 1");
if($db->NumRows() != 1){ echo "<center><b><font color = 'red'>Ссылка для регистрации не действительна :(</font></b></center><BR />"; return; }

$data_t = $db->FetchArray();
$db->FreeMemory();

?>
<div class="s-bk-lf">
<div class="acc-title">Регистрация</div>
</div>
<div class="silver-bk"><div class="clr"></div>
<?PHP
# Защита от мультиаккаунтов
$ip = $_SERVER["REMOTE_ADDR"];
$db->Query("SELECT COUNT(*) FROM db_users_a WHERE ip = '$ip'");
if($db->FetchRow() == 0){

# Регистрация
if(isset($_POST["login"])){

$login = $func->IsLogin($_POST["login"]);
$pass = $func->IsPassword($_POST["pass"]);
$rules = isset($_POST["rules"]) ? true : false;
$time = time();
$ip = $func->UserIP;

$referer_id = $data_t["referer_id"];
$referer_name = $data_t["referer_name"];
$email = $data_t["email"];

if($rules){

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){

# Регаем пользователя
$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) VALUES ('$lid','$login')");

# Вставляем статистику
$db->Query("UPDATE db_stats SET all_users = all_users +1 WHERE id = '1'");

# Удаляем рег кей
$db->Query("DELETE FROM db_regkey WHERE email = '$email' OR id = '$token_id'");

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><b><font color = 'red'>Логин заполнен неверно</font></b></center><BR />";

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

}


?>


<BR />
<form action="" method="post">
<table width="500" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="left" style="padding:3px;">Ваш псевдоним: <font color="#FF0000">*</font></td>
<td align="left" style="padding:3px;"><input name="login" type="text" size="25" maxlength="10" value="<?=(isset($_POST["login"])) ? $_POST["login"] : false; ?>"/></td>
</tr>
<tr>
<td colspan="2" align="left" style="padding:3px;">Поле псевдоним должно иметь от 4 до 10 символов (только англ. символы).</td>
</tr>

<tr>
<td colspan="2" align="left">&nbsp;</td>
</tr>
<tr>
<td align="left" style="padding:3px;">Пароль: <font color="#FF0000">*</font></td>
<td align="left" style="padding:3px;"><input name="pass" type="password" size="25" maxlength="20" /></td>
</tr>
<tr>
<td colspan="2" align="left" style="padding:3px;">Поле Пароль должно иметь от 6 до 20 символов (только англ. символы).</td>
</tr>
<tr>
<td align="left" style="padding:3px;">Пароль еще раз: <font color="#FF0000">*</font></td>
<td align="left" style="padding:3px;"><input name="repass" type="password" size="25" maxlength="20" /></td>
</tr>
<tr>
<td colspan="2" align="left" style="padding:3px;">Пароли должны совпадать.</td>
</tr>
<tr>
<td align="left" style="padding:3px;">Вас пригласил:</td>
<td align="left" style="padding:3px;">[ID: <?=$data_t["referer_id"];?>] <?=$data_t["referer_name"];?></td>
</tr>
<tr>
<td colspan="2" align="left">&nbsp;</td>
</tr>
<tr>
<td colspan="2" align="left" style="padding:3px;">
С <a href="https://servahoc.ru/redirect.php?url=/rules" target="_blank" class="stn">правилами</a> проекта ознакомлен(а) и принимаю: <input name="rules" type="checkbox" /></td>
</tr>
<tr>
<td colspan="2" align="left">&nbsp;</td>
</tr>
<tr>
<td colspan="2" align="center" style="padding:3px;"><input name="registr" type="submit" value="Зарегистрироваться" style="height: 30px;"></td>
</tr>
</table>
</form>

</div>
<div class="clr"></div>
В папке classes в файле _class.isender.php вместо своего поставь мое - оно 100% работает:

Код:
<?php
class isender{
   
    var $Hosts = "";
   
    /*======================================================================*\
    Function:    __construct
    Descriiption: Конструктор класса
    \*======================================================================*/
    function __construct(){
   
        $this->Hosts = str_replace("www.","",$_SERVER['HTTP_HOST']);
   
    }
   
    /*======================================================================*\
    Function:    SendRegKey
    Descriiption: Отправляет регистрационный ключ
    \*======================================================================*/
    function SendRegKey($mail, $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($mail, $subject, $text);
       
    }
   
    /*======================================================================*\
    Function:    RecoveryPassword
    Descriiption: Восстановление пароля
    \*======================================================================*/
    function RecoveryPassword($user, $pass, $mail){
   
        $text = "Данные для входа в личный кабинет пользователя: <BR />";
        $text.= "ВНИМАНИЕ - не забывайте свои данные, а лучше - запишите: <BR />";
        $text.= "<b>Логин:</b> {$user}<BR />";
        $text.= "<b>Пароль: </b> {$pass}<BR />";
        $text.= "Ссылка для входа в кабинет: <a href='http://".$this->Hosts."/index.php'>http://".$this->Hosts."/index.php</a>";
        $subject = "Восстановление забытого пароля в системе \"".$this->Hosts."\"";
       
        return $this->SendMail($mail, $subject, $text);
       
    }
   
    /*======================================================================*\
    Function:    SendAfterReg
    Descriiption: Отправляет данные после регистрации
    \*======================================================================*/
    function SendAfterReg($user, $mail, $pass){
   
        $text = "Благодарим вас за регистрацию в системе \"".$this->Hosts."\"<BR />";
        $text.= "Ваши данные для входа в личный кабинет пользователя: <BR />";
        $text.= "<b>Логин:</b> {$user}<BR />";
        $text.= "<b>Пароль:</b> {$pass}<BR />";
        $text.= "Ссылка для входа в кабинет: <a href='http://".$this->Hosts."/index.php'>http://".$this->Hosts."/index.php</a>";
        $subject = "Завершение регистрации в системе \"".$this->Hosts."\"";
       
        return $this->SendMail($mail, $subject, $text);
       
    }
   
    /*======================================================================*\
    Function:    SetNewPassword
    Descriiption: Отправляет данные после смены пароля
    \*======================================================================*/
    function SetNewPassword($user, $pass, $mail){
   
        $text = "В настройках вашего аккаунта был изменен пароль<BR />";
        $text.= "Ваши новые данные для входа в личный кабинет пользователя: <BR />";
        $text.= "<b>Логин:</b> {$user}<BR />";
        $text.= "<b>Новый пароль:</b> {$pass}<BR />";
        $text.= "Ссылка для входа в кабинет: <a href='http://".$this->Hosts."/index.php'>http://".$this->Hosts."/index.php</a>";
        $subject = "Смена пароля в системе \"".$this->Hosts."\"";
       
        return $this->SendMail($mail, $subject, $text);
       
    }
   
   
    /*======================================================================*\
    Function:    Headers
    Descriiption: Создание заголовков письма
    \*======================================================================*/
    function Headers(){
   
    $headers = "MIME-Version: 1.0\r\n";
    $headers.= "Content-type: text/html; charset=utf-8\r\n";
    $headers.= "Date: ".date("m.d.Y (H:i:s)",time())."\r\n";
    $headers.= "From: support@".$this->Hosts." \r\n";
   
        return $headers;
   
    }
   
    /*======================================================================*\
    Function:    SendMail
    Descriiption: Отправитель
    \*======================================================================*/
    function SendMail($recipient, $subject, $message){
   
        $message .= "<BR />----------------------------------------------------
        <BR />Сообщение было выслано роботом, пожалуйста, не отвечайте на него!";
        return (mail($recipient, $subject, $message, $this->Headers())) ? true : false;
   
    }
   
   
   
}
?>
 
Rekuv
Участник
Сообщения
10
Реакции
0
Вячеслав написал(а):
Что нужно обновить в скрипте регистрации чтобы письмо моментально приходило? Регистрация с подтверждением почты и восстановление не работает вообще, когда я скачал оригинал движка.

Вот оригинал с защитой по ип:
PHP:
<?PHP
$_OPTIMIZATION["title"] = "Регистрация";
$_OPTIMIZATION["description"] = "Регистрация пользователя в системе";
$_OPTIMIZATION["keywords"] = "Регистрация нового участника в системе";

if(isset($_SESSION["user_id"])){ Header("Location: /account"); return; }


if(!isset($_GET["key"])){


?>
<div class="s-bk-lf">
    <div class="acc-title">Регистрация</div>
</div>
<div class="silver-bk"><div class="clr"></div> 
             
<p>Укажите Ваш Email, на него будет выслана ссылка для регистрации.</p>


<?PHP

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

        if(isset($_SESSION["captcha"]) AND strtolower($_SESSION["captcha"]) == strtolower($_POST["captcha"])){
Да а просто действительно, как ниже посоветовали, с другого скрипта нельзя было сдернуть)
     
        unset($_SESSION["captcha"]);
     
        $email = $func->IsMail($_POST["email"]);
        $referer_id = (isset($_COOKIE["i"]) AND intval($_COOKIE["i"]) > 0 AND intval($_COOKIE["i"]) < 1000000) ? intval($_COOKIE["i"]) : 1;
        $ttime = time();
        $tidex = time() - 60*15;
     
            if($email !== false){
         
            $db->Query("DELETE FROM db_regkey WHERE date_del < '".$ttime."' OR (date_add < '".$tidex."' AND email = '$email')");
            $db->Query("SELECT COUNT(*) FROM db_regkey WHERE email = '$email'");
         
                if($db->FetchRow() == 0){
             
                    $db->Query("SELECT COUNT(*) FROM db_users_a WHERE email = '$email'");
                 
                    if($db->FetchRow() == 0){
                 
                 
                        # Узнаем реферера
                        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 = "player1"; }
                     
                        }else{ $referer_id = 1; $referer_name = "player1"; }
                     
                     
                        # Заносим запись в reg_key
                        $td = $ttime + 60*60;
                        $db->Query("INSERT INTO db_regkey (email, referer_id, referer_name, date_add, date_del)
                        VALUES ('$email','$referer_id','$referer_name','$ttime','$td')");
                     
                        $lid = $db->LastInsert();
                        $reg_key = $lid."-".md5($lid."_rfs_".$lid);
                     
                        # Отправляем на почту
                        $sender = new isender;
                        $sender -> SendRegKey($email, $reg_key);
                     
                        echo "<center><font color = 'green'><b>Указанный Email была отправлена ссылка для регистрации</b></font></center>";
                        ?></div>
                        <div class="clr"></div> 
                        <?PHP
                        return;
                     
                    }else echo "<center><font color = 'red'><b>Указанный Email уже зарегистрирован в системе</b></font></center>";
                 
                }else echo "<center><font color = 'red'><b>За последние 15 минут Вы уже запрашивали ссылку для регистрации</b></font></center>";
         
            }else echo "<center><font color = 'red'><b>Email имеет неверный формат</b></font></center>";
     
        }else echo "<center><font color = 'red'><b>Символы с картинки введены неверно</b></font></center>";

    }
?>
<BR />
<form action="" method="post">
<table width="500" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td align="left" width="250">Email (На него вышлем ссылку):</td>
    <td align="left" width="250"><input name="email" type="text" size="25" maxlength="50" value="<?=(isset($_POST["email"])) ? $_POST["email"] : false; ?>"/></td>
  </tr>
  <tr>
    <td align="left" width="250" style="padding-top:20px;">
    <a href="https://servahoc.ru/redirect.php?url=#" onclick="ResetCaptcha(this);"><img src="/captcha.php?rnd=<?=rand(1,10000); ?>"  border="0" style="margin:0;"/></a>
    </td>
    <td align="left" width="250" style="padding-top:20px;">Введите символы с картинки<input name="captcha" type="text" size="25" maxlength="50" /></td>
  </tr>
  <tr>
    <td colspan="2" align="center"><BR /><input type="submit" value="Выслать ссылку" class="button_0" style="height: 30px;"></td>
  </tr>
</table>

</form>
<BR />
</div>
<div class="clr"></div> 
<?PHP

return;
}

# Регистрация
$_GET["key"] = (string) $_GET["key"];

$token_data = explode('-', $_GET["key"]);

$token_id = intval($token_data[0]);
$token_hash = (string) $token_data[1];
 
    if(strlen($token_hash) != 32){ echo "<center><b><font color = 'red'>Ссылка для регистрации не действительна :(</font></b></center><BR />"; return; }
 
    $tkey = md5($token_id."_rfs_".$token_id);
    if($token_hash != $tkey){ echo "<center><b><font color = 'red'>Ссылка для регистрации не действительна :(</font></b></center><BR />"; return; }
 
    $db->Query("SELECT * FROM db_regkey WHERE id = '$token_id' LIMIT 1");
    if($db->NumRows() != 1){ echo "<center><b><font color = 'red'>Ссылка для регистрации не действительна :(</font></b></center><BR />"; return; }
 
    $data_t = $db->FetchArray();
    $db->FreeMemory();
 
?>
<div class="s-bk-lf">
    <div class="acc-title">Регистрация</div>
</div>
<div class="silver-bk"><div class="clr"></div> 
<?PHP
# Защита от мультиаккаунтов
$ip = $_SERVER["REMOTE_ADDR"];
$db->Query("SELECT COUNT(*) FROM db_users_a WHERE ip = '$ip'");
if($db->FetchRow() == 0){
 
    # Регистрация
    if(isset($_POST["login"])){
 
    $login = $func->IsLogin($_POST["login"]);
    $pass = $func->IsPassword($_POST["pass"]);
    $rules = isset($_POST["rules"]) ? true : false;
    $time = time();
    $ip = $func->UserIP;
 
    $referer_id = $data_t["referer_id"];
    $referer_name = $data_t["referer_name"];
    $email = $data_t["email"];
 
        if($rules){
     
            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){
                     
                        # Регаем пользователя
                        $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) VALUES ('$lid','$login')");
                     
                        # Вставляем статистику
                        $db->Query("UPDATE db_stats SET all_users = all_users +1 WHERE id = '1'");
                     
                        # Удаляем рег кей
                        $db->Query("DELETE FROM db_regkey WHERE email = '$email' OR id = '$token_id'");
                     
                        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><b><font color = 'red'>Логин заполнен неверно</font></b></center><BR />";
     
        }else echo "<center><b><font color = 'red'>Вы не подтвердили правила</font></b></center><BR />";
 
    }
 
 
?>


<BR />
<form action="" method="post">
<table width="500" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td align="left" style="padding:3px;">Ваш псевдоним: <font color="#FF0000">*</font></td>
    <td align="left" style="padding:3px;"><input name="login" type="text" size="25" maxlength="10" value="<?=(isset($_POST["login"])) ? $_POST["login"] : false; ?>"/></td>
  </tr>
  <tr>
    <td colspan="2" align="left" style="padding:3px;">Поле псевдоним должно иметь от 4 до 10 символов (только англ. символы).</td>
    </tr>

  <tr>
    <td colspan="2" align="left">&nbsp;</td>
    </tr>
  <tr>
    <td align="left" style="padding:3px;">Пароль: <font color="#FF0000">*</font></td>
    <td align="left" style="padding:3px;"><input name="pass" type="password" size="25" maxlength="20" /></td>
  </tr>
  <tr>
    <td colspan="2" align="left" style="padding:3px;">Поле Пароль должно иметь от 6 до 20 символов (только англ. символы).</td>
    </tr>
  <tr>
    <td align="left" style="padding:3px;">Пароль еще раз: <font color="#FF0000">*</font></td>
    <td align="left" style="padding:3px;"><input name="repass" type="password" size="25" maxlength="20" /></td>
  </tr>
  <tr>
    <td colspan="2" align="left" style="padding:3px;">Пароли должны совпадать.</td>
    </tr>
  <tr>
    <td align="left" style="padding:3px;">Вас пригласил:</td>
    <td align="left" style="padding:3px;">[ID: <?=$data_t["referer_id"];?>] <?=$data_t["referer_name"];?></td>
  </tr>
  <tr>
    <td colspan="2" align="left">&nbsp;</td>
  </tr>
  <tr>
    <td colspan="2" align="left" style="padding:3px;">
    С <a href="https://servahoc.ru/redirect.php?url=/rules" target="_blank" class="stn">правилами</a> проекта ознакомлен(а) и принимаю: <input name="rules" type="checkbox" /></td>
  </tr>
  <tr>
    <td colspan="2" align="left">&nbsp;</td>
  </tr>
  <tr>
    <td colspan="2" align="center" style="padding:3px;"><input name="registr" type="submit" value="Зарегистрироваться" style="height: 30px;"></td>
  </tr>
</table>
</form>

</div>
<div class="clr"></div>
 
Вячеслав
Местный
Сообщения
229
Реакции
21
Проверим skroliks:stop:
 
Вячеслав
Местный
Сообщения
229
Реакции
21
Как сделать так чтобы бонус который снимаешь каждые 24 часа отображался в левом дополнительном блоке, который можно за пару сек. сделать и имена пользователей с датой снятия?
 
skroliks
PHP, MySQL, CSS
Участник
Сообщения
280
Реакции
46
Вячеслав написал(а):
Как сделать так чтобы бонус который снимаешь каждые 24 часа отображался в левом дополнительном блоке, который можно за пару сек. сделать и имена пользователей с датой снятия?
Так его же 5 секунд делать - чего же не сделаете? :)
 
Вячеслав
Местный
Сообщения
229
Реакции
21
:rofl: Это блок сделать можно, а вывести код в блок от куда!!!
 
skroliks
PHP, MySQL, CSS
Участник
Сообщения
280
Реакции
46
Вячеслав написал(а):
:rofl: Это блок сделать можно, а вывести код в блок от куда!!!
Ну как откуда? Из бонусов же! Все просто! :)
 
Вячеслав
Местный
Сообщения
229
Реакции
21
  • #10
уже сделал :chih:
 
Сверху