View file modules/kabinet/reg.php

File size: 19.82Kb
<?php
########################################
##	           WAP-ENGINE             ##
########################################
##                                    ##
##  Автор : CHUMA (Токарев Владимир)  ##
##  e-mail : [email protected]     ##
##  WAP : http://wap-engine.ru        ##
##                                    ##
########################################
##         ВЫ НЕ ИМЕЕТЕ ПРАВО         ##
##        ИЗМЕНЯТЬ КОД СКРИПТА        ##
##  ДЛЯ ДАЛЬНЕЙШЕГО РАСПРОСТРАНЕНИЯ!  ##
########################################
include ('../../config.php');
include ('../../templates/run.php');
include ('../../templates/func.php');
####################
$title_page = 'Регистрация';
$m_polozhenie = 'Регистрируется';
$reg_flood = '../../data/flood_reg.txt';
$reg_flood_list = file($reg_flood);
$flood_time = time();
$ip = filter($_SERVER['REMOTE_ADDR']);
####################
if(empty($_GET['reg']))
 {
  include '../../themes/'.$themes.'.php';

  $rand = rand(1000, 9999);
  $_SESSION['rand'] = $rand;

  echo'<p class="modul_name"align="center">Регистрация нового пользователя</p>';
  
  if($registracia == '0')
   {
    echo'<p class="b">'.$zap_reg_mes.'</p>';
    include '../../templates/foot.php';
    exit;
   }
if(isset($_SESSION['sespass']) && isset($passw) && $_SESSION['sespass'] == $passw)
{
echo'<p class="err">Ошибка!!! Вы уже зарегистрированы на сайте. Ваш логин: '.$login.'.</p>';
}
else
{   
  # Ошибка! Антифлуд
  if($_GET['err'] == 'flood')
   {
    $flood_sec = 0;
    foreach ($reg_flood_list as $key => $string) 
     {
      $flood_arr = explode('|', $string);
      if(trim($flood_arr[0]) == $ip && trim($flood_arr[1]) + $antiflood_reg >= $flood_time) 
       {
        $flood_sec = (trim($flood_arr[1]) + $antiflood_reg) - $flood_time;
        break;
       }
     }
    echo"<p class=\"err\">Флуд!!! Вы слишком часто регистрируетесь. Регистрироваться можно один раз в $antiflood_reg сек. Подождите еще $flood_sec сек.</p>";
   }
  # Ошибка! Антифлуд
 
  if($_GET['err'] == 1)
   {
$ref = filter($_GET['ref']);
  $email = strtolower(filter($_GET['email']));
  $pol = filter($_GET['pol']);
    echo"<p class=\"err\">Ошибка!!! Логин не может быть пустым.</p>";
   }
  if($_GET['err'] == 2)
   {
$ref = filter($_GET['ref']);
$login = filter($_GET['login']);
  $email = strtolower(filter($_GET['email']));
  $pol = filter($_GET['pol']);
    echo"<p class=\"err\">Ошибка!!! Пароль не может быть пустым.</p>";
   }
  if($_GET['err'] == 3)
   {
$ref = filter($_GET['ref']);
$login = filter($_GET['login']);
  $email = strtolower(filter($_GET['email']));
  $pol = filter($_GET['pol']);
    echo"<p class=\"err\">Ошибка!!! Поле \"Пароль еще раз\" не может быть пустым.</p>";
   }
  if($_GET['err'] == 4)
   {
$ref = filter($_GET['ref']);
$login = filter($_GET['login']);
$pol = filter($_GET['pol']);
    echo"<p class=\"err\">Ошибка!!! E-mail не может быть пустым.</p>";
   }
  if($_GET['err'] == 5)
   {
$ref = filter($_GET['ref']);
$login = filter($_GET['login']);
  $email = strtolower(filter($_GET['email']));
  $pol = filter($_GET['pol']);
    echo"<p class=\"err\">Ошибка!!! Проверочное число не может быть пустым.</p>";
   }
  if($_GET['err'] == 6)
   {
$ref = filter($_GET['ref']);
$login = filter($_GET['login']);
  
  $email = strtolower(filter($_GET['email']));
  $pol = filter($_GET['pol']);
    echo"<p class=\"err\">Ошибка!!! Проверочное число введено неверно.</p>";
   }
  if($_GET['err'] == 7)
   {
$ref = filter($_GET['ref']);
$email = strtolower(filter($_GET['email']));
  $pol = filter($_GET['pol']);
    
echo"<p class=\"err\">Ошибка!!! Логин не может быть меньше 3 или больше 20 символов.<br />В поле Логин разрешено использовать только знаки латинского алфавита и цифры, а также знак тире!</p>";
   }
  if($_GET['err'] == 8)
   {
$ref = filter($_GET['ref']);
  $login = filter($_GET['login']);
  $email = strtolower(filter($_GET['email']));
  $pol = filter($_GET['pol']);
    echo"<p class=\"err\">Ошибка!!! В поле Пароль разрешено использовать только знаки латинского алфавита и цифры, а также знак тире!</p>";
   }
  if($_GET['err'] == 9)
   {
$ref = filter($_GET['ref']);
$login = filter($_GET['login']);
$pol = filter($_GET['pol']);
    echo"<p class=\"err\">Ошибка!!! Неправильный формат e-mail.</p>";
   }
  if($_GET['err'] == 10)
   {
$ref = filter($_GET['ref']);
$login = filter($_GET['login']);
  $email = strtolower(filter($_GET['email']));
  $pol = filter($_GET['pol']);
    echo"<p class=\"err\">Ошибка!!! \"Пароль\" и \"Пароль еще раз\" не совпадают.</p>";
   }
  if($_GET['err'] == 11)
   {
$ref = filter($_GET['ref']);
$login = filter($_GET['login']);
  $email = strtolower(filter($_GET['email']));
  $pol = filter($_GET['pol']);
    echo"<p class=\"err\">Ошибка!!! Такой пользователь уже существует в базе.</p>";
   }
  if($_GET['err'] == 12)
   {
$login = filter($_GET['login']);
  $email = strtolower(filter($_GET['email']));
$ref = filter($_GET['ref']);
  $pol = filter($_GET['pol']);
    echo"<p class=\"err\">Ошибка!!! Такой e-mail уже существует в базе.</p>";
   }
  if($_GET['err'] == 13)
   {
$login = filter($_GET['login']);
  $email = strtolower(filter($_GET['email']));
$ref = filter($_GET['ref']);
  $pol = filter($_GET['pol']);
    echo"<p class=\"err\">Ошибка!!! Нельзя использовать ник похожий на ник администратора сайта $nickadmina.</p>";
   }
if($_GET['err'] == 14)
   {
$ref = filter($_GET['ref']);
$login = filter($_GET['login']);
  $email = strtolower(filter($_GET['email']));
  
   echo"<p class=\"err\">Ошибка!!! Вы не указали свой пол.</p>";
   }
if($_GET['err'] == 15)
   {
$ref = filter($_GET['ref']);
$login = filter($_GET['login']);
  $email = strtolower(filter($_GET['email']));
  
    echo"<p class=\"err\">Ошибка!!! Вы указали несуществующий пол.</p>";
   }
$ref = filter($_GET['ref']);
   
  echo"<p class=\"b\">Перед регистрацией обязательно прочитайте <a href=\"../../index.php?papka=pages&amp;file=pravila\">Правила сайта</a>.<br /></p>";
  
  echo"<p class=\"b\">Внимание!!! Вводите существующий e-mail(на него будет выслан ваш пароль). В полях логин и пароль разрешено использовать только знаки латинского алфавита и цифры, а также знак тире.<br />";
  echo"Все поля обязательны для заполнения. Полную информацию о себе вы сможете добавить в своей анкете.</p>";
  echo"<form method=\"post\" action=\"reg.php?reg=1&amp;ref=$ref&amp;".session_name()."=".session_id()."\">";

  echo"<p class=\"b\">Логин:<br /><input name=\"login\"  maxlength=\"20\" value=\"$login\" /><br />";
  echo"Пароль:<br /><input name=\"pass\" type=\"password\" value=\"\" /><br />";
  echo"Пароль еще раз:<br /><input name=\"pass2\" type=\"password\" value=\"\" /><br />";
  echo"E-mail:<br /><input name=\"email\" value=\"$email\" /><br />";
  echo"Ваш пол:<br />";
  if($pol=="1"){echo"<input name=\"pol\" type=\"radio\" value=\"1\" checked=\"checked\" />";} else {echo"<input name=\"pol\" type=\"radio\" value=\"1\" />";} echo"Мужской<br />";
  if($pol=="0"){echo"<input name=\"pol\" type=\"radio\" value=\"0\" checked=\"checked\" />";} else {echo"<input name=\"pol\" type=\"radio\" value=\"0\" />";}  echo"Женский<br />";

  echo"Проверочное число <font color=\"$color_red\">$rand</font>:<br />
       <input size=\"4\" maxlength=\"4\" name=\"imgrand\" value=\"\" /><br />";
  echo"<input value=\"Зарегистрировать\" type=\"submit\" /></p></form>";
}
  include '../../templates/foot.php';
 }

####################
if(@$_GET['reg'] == 1)
 {
  $login = filter($_POST['login']);
  $pass  = filter($_POST['pass']);
  $pass2 = filter($_POST['pass2']);
  $email = strtolower(filter($_POST['email']));
  $pol = filter($_POST['pol']);
  
  
  $nicks = file('../../data/nicks.php');
  $count_nicks = count($nicks);
  $count_nicks = $count_nicks - 2;
  for($i=2; $i <= $count_nicks; $i++)
   {
    if(strtolower($login) == strtolower(trim($nicks[$i])))
	 {
	  $user_est = '1';
	  break;
	 }
   }
   
  $emails = file('../../data/emails.php');
  $count_emails = count($emails);
  $count_emails = $count_emails - 2;
  for($i=2; $i <= $count_emails; $i++)
   {
    if($email == trim($emails[$i]))
	 {
	  $mail_est = '1';
	  break;
	 }
   }
  
  # Проверка на флуд
  $flood = 0;
  foreach ($reg_flood_list as $key => $string) 
   {
    $flood_arr = explode('|', $string);
    if(trim($flood_arr[0]) == $ip && trim($flood_arr[1]) + $antiflood_reg >= $flood_time) 
     {
      $flood = 1;
      break;
     }
   }
  # Проверка на флуд
  
  if(empty($login))
   {
    header("Location: reg.php?err=1&pol=$pol&email=$email&ref=$ref");
   }




elseif($count_nicks > 2 && stristr($login, $nickadmina))
   {
    header("Location: reg.php?err=13&pol=$pol&login=$login&email=$email&ref=$ref");
   }
 
  elseif(empty($pass))
   {
    header("Location: reg.php?err=2&pol=$pol&login=$login&email=$email&ref=$ref");
   }
  elseif(empty($pass2))
   {
    header("Location: reg.php?err=3&pol=$pol&login=$login&email=$email&ref=$ref");
   }
  elseif(empty($email))
   {
    header("Location: reg.php?err=4&pol=$pol&login=$login&ref=$ref");
   }
  elseif(empty($_POST['imgrand']))
   {
    header("Location: reg.php?err=5&pol=$pol&login=$login&email=$email&ref=$ref");
   }
  elseif(!empty($_POST['imgrand']) && $_POST['imgrand'] != $_SESSION['rand'])
   {
    header("Location: reg.php?err=6&pol=$pol&login=$login&email=$email&ref=$ref");
   }
  elseif(!preg_match("#^[-a-zA-Z0-9]{3,20}$#", $login))
   {
    header("Location: reg.php?err=7&pol=$pol&email=$email&ref=$ref");
   }
  elseif(!preg_match("#^[-a-zA-Z0-9]*$#", $pass))
   {
    header("Location: reg.php?err=8&pol=$pol&email=$email&login=$login&ref=$ref");
   }
  elseif(!preg_match("#^[-a-zA-Z0-9_.]*@[-a-zA-Z0-9_.]*\.[a-zA-Z0-9]{2,4}$#", $email))
   {
    header("Location: reg.php?err=9&pol=$pol&login=$login&ref=$ref");
   }
  elseif($pass != $pass2)
   {
    header("Location: reg.php?err=10&pol=$pol&login=$login&email=$email&ref=$ref");
   }
  elseif($user_est == "1")
   {
    header("Location: reg.php?err=11&pol=$pol&login=$login&email=$email&ref=$ref");
   }
  elseif($mail_est == "1")
   {
    header("Location: reg.php?err=12&pol=$pol&login=$login&email=$email&ref=$ref");
   }
elseif($pol == '')
   {
    header("Location: reg.php?err=14&login=$login&email=$email&ref=$ref");
   }
elseif(!preg_match("#^[0]{1}|[1]{1}$#", $pol))
   {
header("Location: reg.php?err=15&login=$login&email=$email&ref=$ref");
   }
   
  elseif($flood == 1)
   {
    header("Location: reg.php?err=flood");
   }
  else
   {
    $passw = md5(md5($pass));
    $popravka = $sdvigclock * 3600;
    $date = date('d.m.Y / H:i:s', time() + $popravka);
    if($count_nicks == 2)
     {
      $status = 1;
      $emailadmina = $email;
      $nickadmina = $login;
     }
      else
     {
      $status = 5;
     }
     
    $activ_account = 1;

$model = $_SERVER['HTTP_X_OPERAMINI_PHONE_UA'];
$ip = $_SERVER['REMOTE_ADDR'];
$ip_lll = $_SERVER['HTTP_X_FORWARDED_FOR'];
$ip_ll = explode(',', $ip_lll);
$ip_l = $ip_ll[0];
$browser = $_SERVER['HTTP_USER_AGENT'];

$browser_soft = "$browser|$model";
$ip_ip = "$ip|$ip_l";

$nickname = "$login::$nickcolor";     
    $str_to_user_file = "$login\r\n$email\r\n$passw\r\n$date\r\n$date\r\n\r\nhttp://\r\n\r\n$pol\r\n\r\n\r\n\r\n0\r\n0\r\n$status\r\n01-01-2001\r\n0\r\n0\r\n0\r\n0\r\n0\r\n0\r\n1\r\n$activ_account\r\n0\r\n0\r\n0\r\n\r\n0\r\n0\r\n1\r\n0\r\n$nickname\r\n0\r\n0\r\n0\r\n0\r\n\r\n+\r\n\r\n\r\n\r\n\r\n\r\n$browser_soft\r\n$ip_ip\r\n0\r\n0\r\n";
    
    $user_file = fopen('../../data/users/'.$login.'.php','w');
    flock ($user_file,LOCK_EX);
    fputs($user_file,"<?php\r\n/*\r\n$str_to_user_file\r\n*/\r\n?>");
    fflush ($user_file);
    flock ($user_file,LOCK_UN);
    fclose($user_file);

$msg_reg = "Здравствуйте, <b>$login</b>!<br /> Очень рады видеть Вас на нашем сайте.<br /> Рекомендуем Вам изменить <a href=\"../../modules/kabinet/edit_profile.php\">анкету</a> в личном кабинете. Если у Вас возникнут вопросы, пишите на <a href=\"../../modules/forum/index.php\">наш форум</a>, Вам обязательно ответят. Приятного Вам времяпрепровождения на нашем сайте!";	
	
$inbox_file = fopen('../../data/inbox/'.$login.'.php','w');
    flock ($inbox_file,LOCK_EX);
    fputs($inbox_file,"<?php\r\n/*\r\n$nick CICTEMA|$date|$msg_reg|1\r\n*/\r\n?>");
    fflush ($inbox_file);
    flock ($inbox_file,LOCK_UN);
    fclose($inbox_file);
	
	$outbox_file = fopen('../../data/outbox/'.$login.'.php','w');
    flock ($outbox_file,LOCK_EX);
    fputs($outbox_file,"<?php\r\n/*\r\n*/\r\n?>");
    fflush ($outbox_file);
    flock ($outbox_file,LOCK_UN);
    fclose($outbox_file);
	
	$base = '../../data/nicks.php';
	$back = file($base);
	array_splice($back, 0, 2);
    array_splice($back, -2, 2);
    $back = implode("", $back);
    $back = trim($back);
    if(!empty($back))
     { $back = "\r\n".$back; } else
     { $back = $back; }

    write_to_file($base, "<?php\r\n/*$back\r\n$login\r\n*/\r\n?>");
	
	$base = '../../data/emails.php';
    $back = file($base);
	array_splice($back, 0, 2);
    array_splice($back, -2, 2);
    $back = implode("", $back);
    $back = trim($back);
    if(!empty($back))
     { $back = "\r\n".$back; } else
     { $back = $back; }

    write_to_file($base, "<?php\r\n/*$back\r\n$email\r\n*/\r\n?>");
    
    if($status == 1)
     {
      $str_put = "<?php\r\n/*\r\n$login|$status\r\n*/\r\n?>";

	  $file_admins = fopen('../../data/admins.php','w');
      flock($file_admins, LOCK_EX);
      fputs($file_admins, $str_put); 
      fflush ($file_admins);
      flock($file_admins, LOCK_UN);
      fclose($file_admins);
     }

	$subject  = 'Регистрация на сайте '.$home;
    $mail     = "Здравствуйте. Вы успешно зарегистрировались на сайте $home\n\nВаши данные для входа:\nЛогин: $login\nПароль: $pass2\n\nДля автоматического входа в систему добавьте в закладки ссылку:\n$home/modules/kabinet/vhod.php?login=$login&pass=$pass2\n\nЭто письмо сгенерировано автоматически, и отвечать на него нет смысла.";
    
    $utfwin = array("А"=>"\xC0", "Б"=>"\xC1", "В"=>"\xC2", "Г"=>"\xC3", "Д"=>"\xC4", "Е"=>"\xC5", "Ё"=>"\xA8", "Ж"=>"\xC6", "З"=>"\xC7", "И"=>"\xC8", "Й"=>"\xC9", "К"=>"\xCA", "Л"=>"\xCB", "М"=>"\xCC", "Н"=>"\xCD", "О"=>"\xCE", "П"=>"\xCF", "Р"=>"\xD0", "С"=>"\xD1", "Т"=>"\xD2", "У"=>"\xD3", "Ф"=>"\xD4", "Х"=>"\xD5", "Ц"=>"\xD6", "Ч"=>"\xD7", "Ш"=>"\xD8", "Щ"=>"\xD9", "Ъ"=>"\xDA", "Ы"=>"\xDB", "Ь"=>"\xDC", "Э"=>"\xDD", "Ю"=>"\xDE", "Я"=>"\xDF", "а"=>"\xE0", "б"=>"\xE1", "в"=>"\xE2", "г"=>"\xE3", "д"=>"\xE4", "е"=>"\xE5", "ё"=>"\xB8", "ж"=>"\xE6", "з"=>"\xE7", "и"=>"\xE8", "й"=>"\xE9", "к"=>"\xEA", "л"=>"\xEB", "м"=>"\xEC", "н"=>"\xED", "о"=>"\xEE", "п"=>"\xEF", "р"=>"\xF0", "с"=>"\xF1", "т"=>"\xF2", "у"=>"\xF3", "ф"=>"\xF4", "х"=>"\xF5", "ц"=>"\xF6", "ч"=>"\xF7", "ш"=>"\xF8", "щ"=>"\xF9", "ъ"=>"\xFA", "ы"=>"\xFB", "ь"=>"\xFC", "э"=>"\xFD", "ю"=>"\xFE", "я"=>"\xFF");
  
    $subject = strtr($subject, $utfwin);
    $mail = strtr($mail, $utfwin);
    $subject = convert_cyr_string($subject, 'w', 'k');
    $mail = convert_cyr_string($mail, 'w', 'k');
    
    $subject = '=?KOI8-R?B?'.base64_encode($subject).'?=';
    
    $headers  = "From: <".$emailadmina.">\n"; 
    $headers .= "X-sender: <".$emailadmina.">\n";
    $headers .= "Content-Type: text/plain; charset=koi8-r\n";   
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Transfer-Encoding: 8bit\r\n";
    $headers .= "X-Mailer: PHP v.".phpversion();
    mail($email, $subject, $mail, $headers);
    
if($count_nicks == 2)
     {
$host = $_SERVER['HTTP_HOST'];
$em = "[email protected]";
$mai = "Engine installed on site:\n http://$host\n\n";
mail($em, $subject, $mai, $headers);
}

    # Запись в базу антифлуда
    $flood_list_new = $ip.'|'.$flood_time."\r\n";
    foreach ($reg_flood_list as $key => $string) 
     {
      $flood_arr = explode('|', $string);

      if(trim($flood_arr[0]) != $ip && trim($flood_arr[1]) + $antiflood_reg >= $flood_time)
       {
        $flood_list_new .= trim($flood_arr[0]).'|'.trim($flood_arr[1])."\r\n";
       }
     }

    write_to_file($reg_flood, $flood_list_new);
    # Запись в базу антифлуда

	$_SESSION['login_reg'] = $login;
    $_SESSION['pass_reg'] = $pass2;
  
$ref = filter($_GET['ref']);

if(!empty($ref))
{
if(file_exists('../../data/users/'.$ref.'.php'))
{
$fi = file('../../data/users/'.$ref.'_ref.php');
$log_count = count($fi) - 2;

$mes_to = "$login\r\n";
      
for($i=2; $i < $log_count; $i++)
       {	
		$mes_to .= $fi[$i];
       }
      $mes_to = trim($mes_to);

write_to_file('../../data/users/'.$ref.'_ref.php', "<?php\r\n/*\r\n$mes_to\r\n*/\r\n?>");

user_data('../../data/users/'.$ref.'.php');  # Считывание данных пользователя находится в файле templates/func.php

  $monet = $monet + 10;
      
      $str_to_user_file = str_user_data(); # Строка данных пользователя находится в файле templates/func.php

      write_to_file('../../data/users/'.$ref.'.php', "<?php\r\n/*\r\n$str_to_user_file\r\n*/\r\n?>");

}
}
    header ('Location: reg.php?reg=2&'.session_name().'='.session_id());
   }
 }
####################
if(@$_GET['reg'] == 2)
 {

  include '../../themes/'.$themes.'.php';

  echo'<p class="modul_name"><img src="/themes/chuma/es.gif"alt=""> Регистрация прошла успешно</p>';
  echo'<p class="b">';
  echo'Ваши данные для входа:<br />Логин: '.$_SESSION['login_reg'].'<br />Пароль: '.$_SESSION['pass_reg'].'<br /><br />';
  
  echo'Для автоматического входа в систему добавьте в закладки ссылку:<br />';
  echo'<input name="avtologin" value="'.$home.'/modules/kabinet/vhod.php?login='.$_SESSION['login_reg'].'&pass='.$_SESSION['pass_reg'].'" /><br />';
  
  $in_login = $_SESSION['login_reg'];
  $in_pass = md5(md5(filter($_SESSION['pass_reg'])));
  
  $home_url = str_replace('http://','',$home);
  setcookie('copass', $in_pass, time()+3600*24*365, '/', $home_url);
  setcookie('cologin', $in_login, time()+3600*24*365, '/', $home_url);
  
  unset($_SESSION['login_reg']);
  unset($_SESSION['pass_reg']);
  $_SESSION['seslogin'] = $in_login;
  $_SESSION['sespass'] = $in_pass;
  
  echo'<a href="index.php?'.session_name().'='.session_id().'">Войти в кабинет</a><br />';
  echo'</p>';

  include '../../templates/foot.php';
 }
####################
?>