Advertisement
Guest User

Untitled

a guest
Jul 20th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 13.97 KB | None | 0 0
  1. <?
  2.  
  3. require_once("include/bittorrent.php");
  4. dbconn();
  5. global $use_email_act, $regWaitTime, $default_theme;
  6.  
  7. if ($deny_signup && !$allow_invite_signup)
  8.     stderr($tracker_lang['error'], "Извините, но регистрация отключена администрацией.");
  9.  
  10. if ($CURUSER)
  11.     stderr($tracker_lang['error'], sprintf($tracker_lang['signup_already_registered'], $SITENAME));
  12.  
  13. $users = get_row_count("users");
  14. if ($users >= $maxusers)
  15.     stderr($tracker_lang['error'], sprintf($tracker_lang['signup_users_limit'], number_format($maxusers)));
  16.  
  17. if (!mkglobal("wantusername:wantpassword:passagain:email"))
  18.     stderr($tracker_lang['error'], "Прямой доступ к этому файлу не разрешен.");
  19.  
  20. if ($deny_signup && $allow_invite_signup) {
  21.     if (empty($_POST["invite"]))
  22.         stderr("Ошибка", "Для регистрации вам нужно ввести код приглашения!");
  23.     if (strlen($_POST["invite"]) != 32)
  24.         stderr("Ошибка", "Вы ввели не правильный код приглашения.");
  25.     list($inviter) = mysql_fetch_row(sql_query("SELECT inviter FROM invites WHERE invite = " . sqlesc($_POST["invite"])));
  26.     if (!$inviter)
  27.         stderr("Ошибка", "Код приглашения введенный вами не рабочий.");
  28.     list($invitedroot) = mysql_fetch_row(sql_query("SELECT invitedroot FROM users WHERE id = $inviter"));
  29. }
  30.  
  31. function bark($msg) {
  32.     global $tracker_lang;
  33.     stdhead();
  34.     stdmsg($tracker_lang['error'], $msg, 'error');
  35.     stdfoot();
  36.     exit;
  37. }
  38.  
  39. function validusername($username) {
  40.     if ($username == "")
  41.         return false;
  42.  
  43.     // The following characters are allowed in user names
  44.     ///$allowedchars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_".
  45.     //  "абвгдеёжзиклмнопрстуфхшцщэюяьъАБВГДЕЁЖЗИКЛМНОПРСТУФХШЦЩЭЮЯЬЪ";
  46.     $allowedchars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_.";
  47.  
  48.     for ($i = 0; $i < strlen($username); ++$i)
  49.         if (strpos($allowedchars, $username[$i]) === false)
  50.             return false;
  51.  
  52.     return true;
  53. }
  54.  
  55. $gender = $_POST["gender"];
  56. $website = $_POST["website"];
  57. $country = $_POST["country"];
  58. $year = $_POST["year"];
  59. $month = $_POST["month"];
  60. $day = $_POST["day"];
  61.  
  62. $ip = getip();
  63. //if (!validip($ip))
  64. //    bark("Извините. Трекер пока что только для пользователей Триона");
  65. $userType = 'other';
  66. if (validip($ip))
  67.     $userType = 'trion';
  68.  
  69. $icq = unesc($_POST["icq"]);
  70. if (strlen($icq) > 10)
  71.     bark("Жаль, Номер icq слишком длинный  (Макс - 10)");
  72.  
  73. /* $secret_q = unesc($_POST["secret_q"]);
  74.   if (!$secret_q)
  75.   bark("Вы должны ввести секретный вопрос");
  76.  
  77.   $secret_a = unesc($_POST["secret_a"]);
  78.   if (!$secret_a)
  79.   bark("Вы должны ввести ответ на секретный вопрос"); */
  80.  
  81.  
  82. $skype = unesc($_POST["skype"]);
  83. if (strlen($skype) > 20)
  84.     bark("Жаль, Ваш skype слишком длинный  (Макс - 20)");
  85.  
  86. if (empty($wantusername) || empty($wantpassword) || empty($email) || empty($gender) || empty($country))
  87.     bark("Все поля обязательны для заполнения.");
  88.  
  89. if (strlen($wantusername) > 12)
  90.     bark("Извините, имя пользователя слишком длинное (максимум 12 символов)");
  91.  
  92. if ($wantpassword != $passagain)
  93.     bark("Пароли не совпадают! Похоже вы ошиблись. Попробуйте еще.");
  94.  
  95. if (strlen($wantpassword) < 6)
  96.     bark("Извините, пароль слишком коротки (минимум 6 символов)");
  97.  
  98. if (strlen($wantpassword) > 40)
  99.     bark("Извините, пароль слишком длинный (максимум 40 символов)");
  100.  
  101. if ($wantpassword == $wantusername)
  102.     bark("Извините, пароль не может быть такой-же как имя пользователя.");
  103.  
  104. if (!validemail($email))
  105.     bark("Это не похоже на реальный email адрес.");
  106.  
  107. if (!validusername($wantusername))
  108.     bark("Неверное имя пользователя. Русские символы в нике запрещены или ник содержит запрещенные символы.");
  109.  
  110. if (strlen($wantusername) < 3)
  111.     bark("Жаль, Ваш ник слишком которкий  (Мин - 3 символа)");
  112.  
  113. if ($year == '0000' || $month == '00' || $day == '00')
  114.     stderr($tracker_lang['error'], "Похоже вы указали неверную дату рождения");
  115. $birthday = date("$year.$month.$day");
  116.  
  117. // make sure user agrees to everything...
  118. if ($_POST["rulesverify"] != "yes" || $_POST["faqverify"] != "yes" || $_POST["ageverify"] != "yes")
  119.     stderr($tracker_lang['error'], "Извините, вы не подходите для того что-бы стать членом этого сайта. Проверьте, что заполнили все поля и отметили все пункты.");
  120.  
  121. $timeToWait = makeTime($regWaitTime);
  122. // check if user have been registered but not been confirmed
  123. $res = sql_query("SELECT id, email, status FROM users WHERE email = " . sqlesc($email)) or sqlerr(__FILE__, __LINE__);
  124. $a = mysql_fetch_assoc($res);
  125. if ($a['status'] == 'pending')
  126.     bark("Акканунт на этот e-mail уже зарегистрирован, но еще не активирован. Дождитесь письма активации. Если он не будет активирован через $timeToWait часов, он будет удален и вы сможете перерегистрироваться заново.");
  127.  
  128.  
  129. // check if email addy is already in use
  130. $a = (@mysql_fetch_row(@sql_query("SELECT COUNT(*) FROM users WHERE email=" . sqlesc($email)))) or die(mysql_error());
  131. if ($a[0] != 0)
  132.     bark("E-mail адрес $email уже зарегистрирован в системе.");
  133.  
  134.  
  135.  
  136. if ($use_captcha) {
  137.     $b = get_row_count("captcha", "WHERE imagehash = " . sqlesc($_POST["imagehash"]) . " AND imagestring = " . sqlesc($_POST["imagestring"]));
  138.     sql_query("DELETE FROM captcha WHERE imagehash = " . sqlesc($_POST["imagehash"])) or die(mysql_error());
  139.     if ($b == 0)
  140.         bark("Вы ввели неправильный код подтверждения.");
  141. }
  142.  
  143.  
  144. $res1 = sql_query("SELECT id FROM users WHERE ip = " . sqlesc($ip)) or sqlerr(__FILE__, __LINE__);
  145. $num = mysql_num_rows($res1);
  146. if ($num > 1)
  147.     if ($userType == 'trion')
  148.         bark("Регистрация невозможна! На один IP-адрес разрешено иметь только два аккаунта. Если Вы хотите зарегистрировать доп. аккаунт - обращайтесь с просьбой к администрации с указанием причины.");
  149.  
  150.  
  151. if (isset($_COOKIE["uid"]) && is_numeric($_COOKIE["uid"]) && $users) {
  152.     $cid = intval($_COOKIE["uid"]);
  153.     $c = sql_query("SELECT enabled FROM users WHERE id = $cid ORDER BY id DESC LIMIT 1");
  154.     $co = @mysql_fetch_row($c);
  155.     if ($co[0] == 'no') {
  156.         sql_query("UPDATE users SET ip = '$ip', last_access = NOW() WHERE id = $cid");
  157.         bark("Ваш один аккаунт отключен на этом трекере. Регистрация невозможна. Почистите кукисы своего браузера или попробуйте зарегистрироваться с другого браузера");
  158.     } else {
  159.         //сбросить кук
  160.         setcookie("uid", '', '', "/");
  161.         bark("Регистрация невозможна! Вы на данный момент активный пользователь ТТТ. Выйдите со своего аккаунта,почистите кукисы своего браузера или попробуйте зарегистрироваться с другого браузера");
  162.     }
  163. } else {
  164.     /*  $b = (@mysql_fetch_row(@sql_query("SELECT enabled, id FROM users WHERE ip LIKE '$ip' ORDER BY last_access DESC LIMIT 1")));
  165.       if ($b[0] == 'no') {
  166.       $banned_id = $b[1];
  167.       setcookie("uid", $banned_id, "0x7fffffff", "/");
  168.       bark("Ваш IP забанен на этом трекере. Регистрация невозможна.");
  169.       } */
  170. }
  171. $secret = mksecret();
  172. $wantpasshash = md5($secret . $wantpassword . $secret);
  173. $editsecret = (!$users ? "" : mksecret());
  174. if ((!$users) || (!$use_email_act == 1))
  175.     $status = 'confirmed';
  176. else
  177.     $status = 'pending';
  178.  
  179.  
  180.  
  181. $tempname1 = mb_strtoupper($wantusername);    //переводим имя в верх. регистр
  182. $res2 = sql_query("SELECT username FROM users ") or sqlerr(__FILE__, __LINE__);
  183. while ($row2 = mysql_fetch_array($res2)) {
  184.     $tempname2 = mb_strtoupper($row2["username"]);
  185.     $check1 = strcmp($tempname1, $tempname2);
  186.     if ($check1 == 0)
  187.         bark("Пользователь $wantusername уже зарегистрирован!");
  188. }
  189. sql_query("INSERT INTO users (username, passhash, secret, editsecret, gender, country, icq, skype, email, uploaded, status, class, added, birthday, invitedby, invitedroot, theme, torrentsperpage) VALUES (" .
  190.                 implode(",", array_map("sqlesc", array($wantusername, $wantpasshash, $secret, $editsecret, $gender, $country, $icq, $skype, $email, 2147483648, $status))) .
  191.                 ", " . (!$users ? UC_SYSOP . ", " : "0, ") . "'" . get_date_time() . "', '$birthday', '$inviter', '$invitedroot', '$default_theme', 20)") or sqlerr(__FILE__, __LINE__);
  192.  
  193. $id = mysql_insert_id();
  194. write_log("Зарегистрирован новый пользователь $wantusername", "FFFFFF", "tracker");
  195. $res = sql_query("SELECT id, passkey, username, passhash,email  FROM users WHERE username = '$wantusername'") or sqlerr(__FILE__, __LINE__);
  196. $row = mysql_fetch_array($res);
  197. $aaa = $row['id'];
  198. /*
  199.   sql_query("INSERT INTO passrecover (uid, question, answer) VALUES(".$aaa.", '".$secret_q."', '".$secret_a."');");
  200.  
  201.   if (strlen($row['passkey']) != 32) {
  202.   $row['passkey'] = md5($row['username'].get_date_time().$row['passhash']);
  203.   sql_query("UPDATE users SET passkey='$row[passkey]' WHERE id=$row[id]");
  204.   }
  205.  */
  206. $sec = mksecret();
  207. $hash = md5($sec . $email . $row["passhash"] . $sec);
  208.  
  209. $body = <<<EOD
  210. Вы зарегистрировались на $SITENAME и указали этот адрес как обрытный ($email).
  211.  
  212. Если это были не вы, пожалуста проигнорируйте это письмо. Персона которая ввела ваш E-Mail адресс имеет IP адрес {$_SERVER["REMOTE_ADDR"]}. Пожалуста, не отвечайте.
  213.  
  214. Для подтверждения вашей регистрации, вам нужно пройти по следующей ссылке:
  215.  
  216.         $DEFAULTBASEURL/confirm.php?id=$id&secret=$hash
  217.  
  218. После того как вы это сделаете, вы сможете использовать ваш аккаунт. Если вы этого не сделаете, ваш новый аккаунт будет удален через $timeToWait часов.
  219. Мы рекомендуем вам прочитать правила и ЧаВо прежде чем вы начнете использовать $SITENAME.
  220. EOD;
  221.  
  222. if ($use_email_act == 1 && $users) {
  223.     /* if (!@sendConfirmationMail($email,$mailData['regTitle'],$mailData['regSubject'],$body)) {
  224.       sql_query("DELETE FROM users WHERE id='$aaa'");
  225.       stderr($tracker_lang['error'], "Невозможно отправить E-Mail. Попробуйте позже");
  226.       } */
  227.     try {
  228.         $regMail = new MailRegistration($email, '', '', $body);
  229.         $regMail->sendConfirmationMail();
  230.     } catch (Exception $e) {
  231.         sql_query("DELETE FROM users WHERE id='$aaa'");
  232.         stderr($tracker_lang['error'], "Невозможно отправить E-Mail. Попробуйте позже");
  233.     }
  234.     $ip = getip();
  235.     $time = time() + $regWaitTime; //1/2 day
  236.     sql_query("INSERT INTO recovers (userId, secretKey, ip, time, mail, type) VALUES ('$aaa', '$hash','$ip','$time','$email', '2')");
  237. }
  238. sql_query("INSERT INTO pass_hack (`ip`,`count`, `type`) values ('" . getip() . "',1,2)");
  239. //logincookie($id, $wantpasshash);
  240. //header("Refresh: 0; url=ok.php?type=". (!$users?"sysop":("signup&email=" . urlencode($email))));
  241.  
  242. $msg = sqlesc("Спасибо за регистрацию. Пожалуйста ознакомьтесь с правилами ресурса и просмотрите раздел [url=/faq.php][b]Часто Задаваемых Вопросов[/b][/url] (ЧАВО или FAQ) на нашем форуме.");
  243. $subject = sqlesc("Спасибо за регистрацию");
  244. $save = sqlesc("no");
  245. $now = sqlesc(get_date_time());
  246.  
  247. sql_query("INSERT INTO messages (poster, sender, receiver, added, msg, subject, saved, location) VALUES(0, 0, " . sqlesc($id) . ", '" . get_date_time() . "', " . sqlesc($msg) . ", " . sqlesc($subject) . ", " . sqlesc($save) . ", 1)") or sqlerr(__FILE__, __LINE__);
  248.  
  249. stderr2("Информационное сообщение. Успешная регистрация пользователя: $row[username] c e-mail: $email", "Вы успешно зарегистрировались. Для того, чтобы использовать наш ресурс Вы должны активировать свой аккаунт. На адрес указанной вами эл. почты был выслан e-mail для подтверждения регистрации. После подтверждения вы можете зайти на ресурс используя свой логин и пароль указанные Вами при регистрации");
  250. print("<meta http-equiv=\"refresh\" content=\"15; URL=login.php\">");
  251. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement