View file other/reg.php

File size: 6.25Kb
<?php 
// by Mike O. (mides), coolcms.org

$title = 'Регистрация';
require_once '../includes/sys.php';
require_once '../includes/header.php';

if (isset($u['id'])) {
    redirect(HTTPHOME);
}

if (empty($config['regoff'])) {
    switch ($act) {
        default:
            tp('Регистрация');
			echo '<div class="body">';
			if ($config['email_ver']) {
				echo '<b>Включено подтверждение по E-mail!</b><br />';
			}
			if ($config['activation']) {
				echo '<b>Включена активация администратором!</b><br />';
			}
            echo '<form name="form" action="?act=do" method="post">
            Логин(min3, max12, a-z, 0-9):<br /><input name="username" type="text" maxlength="12" size="12" /><br />
            Пароль(min3, max20, a-z, 0-9):<br /><input name="password" type="text" maxlength="20" /><br />
            E-mail(max50):<br /><input name="email" type="text" maxlength="50" /><br />
            Провер. код:<br />
			<img src="../images/code.php" alt="" /><br />
            <input name="code" maxlength="5" /><br />
            Я согласен(а) с <a href="info.php?act=rules">правилами</a><br />
            <input type="submit" value="Регистрация"/>
            </form>
			</div>';
        break;

        case 'do':
            $username = check($_POST['username']);
            $password = check($_POST['password']);
            $email = check($_POST['email']);
            $code = abs(intval($_POST['code']));

            # checking if there's a user with such a username
            $query = mysql_query("SELECT COUNT(`id`) FROM `users` WHERE `username` = '$username'"); 
            if (mysql_result($query, 0) > 0) {
                error('Этот логин уже занят.');
                nav('?');
                break;
            }
            # checking if 
            if (!preg_match('|^[a-z0-9\-]+$|i', $username)) {
                error('Логин может состоять только из букв английского алфавита и цифр.');
                nav('?');
                break;
            }
            # проверяем длину логина
            if (strlen($username) < 3 or strlen($username) > 12) {
                    error('Логин должен быть не меньше 3-х и не больше 12-и символов.');
                    nav('?');
                    break;
            }
            # проверка пароля
            if (!preg_match('|^[a-z0-9\-]+$|i', $password)) {
                    error('Пароль может состоять только из букв английского алфавита и цифр.');
                    nav('?');
                    break;
            }
            # проверяем длину пароля
            if (strlen($password) < 3 or strlen($password) > 20) {
                    error('Пароль должен быть не меньше 3-х и не больше 20-и символов.');
                    nav('?');
                    break;
            }
            # проверяем e-mail;
            if (!preg_match('/[0-9a-z_\-]+@[0-9a-z_\-^\.]+\.[a-z]{2,6}/i', $email)) {
                    error('E-mail введён не верно.');
                    nav('?');
                    break;
            }
            # проверяем, правильно ли введен защитный код
            if ($_SESSION['code'] != $code or empty($code)) {
				error('Вы ввели неверный проверочный код.');
				nav('?');
				break;
            }
			
			$ok = !empty($config['activation']) ? 0 : 1;
			$email_ver = !empty($config['email_ver']) ? generate(10) : 1;
					
            mysql_query("INSERT INTO `users` SET `username` = '$username', `password` = '".md5(md5($password))."', `email` = '$email', `regtime` = '".TIME."', `style` = '$config[style]', `language` = '$config[language]', `onpage` = '$config[onpage]', `email_ver` = '$email_ver', `ok` = '$ok'") or die(mysql_error());
			$userid = mysql_insert_id();

            tp($lang['info']);
            echo '<div class="body">Вы успешно зарегистрированы.<br />
            Логин: '.$username.'<br />
            Пароль: '.$password.'<br />
            Автологин:<br /><input name="auto" type="text" value="'.HTTPHOME.'/a.php?l='.$username.'&amp;p='.$password.'" /><br />
            <a href="../a.php?l='.$username.'&amp;p='.$password.'">Ввойти по автологину</a>';

			if ($email_ver != 1) {
				$email_ver_text = '---
				Вам необходимо перейти по ссылке ниже для подтверждения вашего E-mail.
				'.HTTPHOME.'/other/profile.php?act=email_ver&id='.$userid.'&ver='.$email_ver;

				echo '<hr /><b>Включено подтверждение по E-mail.</b><br /> На вашу почту отправлено письмо со ссылкой, по которой необходимо перейти чтобы подтвердить ваш E-mail.';
			}

			if (empty($ok)) {
				echo '<hr /><b>Включена активация аккаунтов.</b><br /> Дождитесь проверки вашего аккаунта администратором.';
			}
			
			echo '</div>';

            // sending e-mail
            $email_a = 'admin@&'.HOME;
            $message = 'Уважаемый пользователь!
            Вы зарегистрировались на '.HOME.', данные для доступа:
            Логин: '.$username.'
            Пароль: '.$password.'
            E-mail: '.$email.'
            Автологин: '.HTTPHOME.'/a.php?l='.$username.'&p='.$password.'
			'.$email_ver_text.'
            
			С уважением, '.HOME;

            mail($email, '=?utf-8?B?'.base64_encode('Регистрация на '.HOME).'?=', $message, "From: $email_a\r\nContent-type: text/plain; charset=utf-8;\r\nX-Mailer: PHP;");
            unset($_SESSION['code']);
        break;

    }
} else {
    error($lang['regoff']);
}

require_once '../includes/tail.php';
?>