require('engine/common.inc.php');
switch($action)
{
default:
$html->start('Registration', array('Main|index.php'));
echo '
Вы должны согласиться со правилами работы сайта.
';
$html->form_start('', '', '', false);
$html->form_add_text('description', '', file_get_contents('template/rules.txt'), '600px', '400px', true);
$html->form_actions();
echo '';
echo '';
$html->form_stop();
$html->stop();
break;
case 'agree':
$html->start('Registration', array('Main|index.php'));
// echo 'Для того чтобы зарегистрироваться на сайте заполните следующюю анкету.
';
$html->form_start('register.php?action=post', 'post', '', false);
$html->form_add_string('login', 'Login', '', 25);
echo '';
$html->form_add_password('password', 'Password', '', 16);
$html->form_add_password('password2', 'Password (again)', '', 16);
echo '
';
$html->form_add_string('email', 'E-mail', '', 25);
$html->form_add_bool('is_save_password', 'Запоминать логин и пароль между визитами', false);
$html->form_actions();
$html->form_add_action('Register');
$html->form_stop();
$html->stop();
break;
case 'post':
$errors = array();
$is_save_password = @checked2int($_POST['is_save_password']);
$login = trim($_POST['login']);
$login = preg_replace('#\s+#s', ' ', $login);
if(strlen($login) < 2 || strlen($login) > 25) $errors []= 1;
$lower_login = strtolower($login);
foreach($sql->get('login', DB.'users') as $row)
if(strtolower($row['login']) == $lower_login) { $errors []= 7; break; }
$password = trim($_POST['password']);
if(strlen($password) < 4 || strlen($password) > 16) $errors []= 2;
$password2 = trim($_POST['password2']);
if(strlen($password2) < 4 || strlen($password2) > 16) $errors []= 3;
if($password != $password2) $errors []= 4;
$email = trim($_POST['email']);
if($email =='') $errors []= 5;
$lower_email = strtolower($email);
foreach($sql->get('email', DB.'users') as $row)
if(strtolower($row['email']) == $lower_email) { $errors []= 6; break; }
if(!strcasecmp($login, 'Guest') || !strcasecmp($login, 'Гость'))
$errors []= 8;
if(preg_match('/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/', $login))
$errors []= 9;
if((strpos($login, '[') !== false || strpos($login, ']') !== false) && strpos($login, '\'') !== false && strpos($login, '"') !== false)
$errors []= 10;
if(!count($errors))
{
$users->register($login, $password, $email, $is_save_password);
send_mail(
$config['site']['title'],
$config['site']['email'],
$email,
'Регистрация',
sprintf(file_get_contents('template/register.txt'),
$login, $password,
$config['site']['name'], $config['site']['url'])
);
header('location: register.php?action=ok');
}
else
{
$html->start('Регистрация', array('Главная|index.php'));
switch($errors[0])
{
case 1: echo 'Имя пользователя должно быть длиной от 2 до 25 символов.
'; break;
case 2: echo 'Пароль должен быть длиной от 4 до 16 символов.
'; break;
case 3: echo 'Подтверждение пароля должено быть длиной от 4 до 16 символов.
'; break;
case 4: echo 'Пароль и подтвержение должны совпадать.
'; break;
case 5: echo 'E-mail адрес не должен быть пустым.
'; break;
case 6: echo 'Пользователь с таким e-mail адресом уже зарегистрирован.
'; break;
case 7: echo 'Пользователь с таким именем уже зарегистрирован.
'; break;
case 8: echo 'Имя не должно быть Guest или Гость.
'; break;
case 9: echo 'Имя не должно быть IP-адресом.
'; break;
case 10: echo 'Имя не должно содержать символов [, ], \' и ".
'; break;
}
echo '';
$html->stop();
}
break;
case 'ok':
$html->start('Registration', array('Главная|index.php'));
echo 'Поздравляем, вы успешно зарегистрированы.
';
echo '';
$html->stop();
break;
}
?>