Файл: modules/register.php
Строк: 127
<?php
define('SHCMS_ENGINE',true);
include_once('../engine/system/core.php');
//Заголовок
$templates->template('Регистрация посетителя');
//Если пользователь уже вошел на сайт то FALSE
if($id_user == true) {
header('Location: /index.php');
}
switch($do):
default:
//Получение IP адреса гостя
$ip = engine::get_ip();
//Создаем массив ошибок
$error = array();
//Обработка кнопки
$submit = filter_input(INPUT_POST,'submit');
//Если нажата кнопка
if(isset($submit)) {
//Обработа Полученного логина
$nick = filter_input( INPUT_POST, 'login', FILTER_SANITIZE_STRING );
//Обработка полученного E-mail`a
$email = filter_input( INPUT_POST, 'email', FILTER_SANITIZE_EMAIL );
$email = filter_var( $email, FILTER_VALIDATE_EMAIL );
//Обработка полученного пароля
$password = filter_input(INPUT_POST, 'password', FILTER_SANITIZE_STRING);
$password2 = filter_input(INPUT_POST, 'password2', FILTER_SANITIZE_STRING);
//Если введенные пароли не совпадают
if( $password != $password2 ) {
$error['password'][] = 'Введенные пароли должны быть одинаковы';
}
//Если введенный пароль меньше 5 символов
if( strlen($password) < 5 ) {
$error['password'][] = 'Пароль должен быть выше 5 символов';
}
//Если Ник превышает 30 символов
if( engine::strlen_shcms( $nick,'utf-8' ) > 30 or engine::strlen_shcms( trim( $nick ), 'utf-8' ) < 3) {
$error['login'][] = 'Недопустимая длина ника';
}
//Проверка на недоступных символов
if( preg_match( "/[||'|<|>|[|]|"|!|?|$|@|/|\|&~*{+]/", $nick ) ) {
$error['login'][] = 'Ваш ник недопустим к регистрации';
}
//Проверяет введено ли в начале Буквы а не Номера
if( preg_match('/[0-9]+/',engine::format_r($nick))) {
$error['login'][] = 'В начале запрещено использовать числовые значение';
}
//Проверяем введенные Email
if( empty( $email ) or strlen( $email ) > 50 OR @count( explode( '@',$email ) ) != 2 ) {
$error['email'][] = 'Введенный Email неверный';
}
//Проверяем Ник
if( strpos( strtolower( $nick ), '.php' ) !== false ) {
$error['login'][] = 'Введенный ник недопустим';
}
//Проверяем Ник на ограниченные ошибки
if( stripos( urlencode($nick), '%AD') !== FALSE) {
$error['login'][] = 'Введенный ник недопустим';
}
//Срезаем ненужные пустые значение из Ника
if( function_exists('mb_strtolower') ) {
$nick = engine::trim(mb_strtolower($nick, 'utf-8'));
} else {
$nick = engine::trim(strtolower( $nick ));
}
//Проверям На свободность ника
$cnick = $db->super_query( "SELECT COUNT(*) as count FROM `users` WHERE nick = '$nick'" );
//Выводим параметр
if( $cnick['count'] ) {
$error['login'][] = 'Введенный Логин уже существует';
}
//Проверям на свободность почты
$row = $db->super_query( "SELECT COUNT(*) as count FROM `users` WHERE email = '$email'" );
//Выводим параметр
if( $row['count'] ) {
$error['email'][] = 'Введенный Email уже существует';
}
//Проверяем была ли у вас раньше Регистрация на сайте
$rowlog = $db->super_query( "SELECT COUNT(*) as count FROM `users` WHERE logged_ip = '{$ip}'" );
//Выводим параметр
// if ( $rowlog['count'] ) {
// echo die(engine::error('На сайте запрещена регистрация нескольких аккаунтов в одним и тем же IP адресом'));
//}
//Проверяем е
if(empty($error)) {
//Генереруем пароль для безопастности
$shgen = engine::shgen($password);
//Добавляем данные в базу
$db->query( "INSERT INTO `users` (`nick`,`password`,`email`,`reg_date`,`lastdate`,`group`,`logged_ip`) VALUES ('".$db->safesql($nick)."','".$shgen."','".$db->safesql($email)."','$_date','$_date','1','$ip')" );
//Получаем последний id
$id = $db->insert_id();
//Запускаем Куки и добавляем данные
setcookie( "user_id_shcms", $id, 365 );
setcookie( "password_shcms", $shgen, 365 );
//Запуск Сессии и добавляем данные
$_SESSION['user_id_shcms'] = $id;
$_SESSION['password_shcms'] = $shgen;
header("Location: ../index.php");
}
}
echo '<div class="mainname">';
echo '<img src="/engine/template/icons/info.png"> ';
echo Lang::__('Новый пользователь');
echo '<span class="text-info right">Заполните все поля</span>';
echo '</div>';
echo '<div class="mainpost"><ul class="list_data clearfix">';
$form = new form('?','','','id="register"');
$form->text('<li class="clear clearfix">');
$form->text('<span class="row_title regstyle">'.Lang::__('Логин').':</span>');
$form->text('<span class="row_data">');
$form->input2(false,'login','text',htmlspecialchars($nick),'placeholder="Введите Логин" required');
$form->text('</span>');
if(isset($error['login'])) {
$form->text('<span class="row_data2 text-error small">'.implode('<br/>', $error['login']).'</span>');
}
$form->text('</li>');
$form->text('<li class="clear clearfix">');
$form->text('<span class="row_title regstyle">'.Lang::__('E-mail').':</span>');
$form->text('<span class="row_data">');
$form->input2(false,'email','email',htmlspecialchars($email),'class="span3" placeholder="shcms@shcms.ru" required');
if(isset($error['email'])) {
$form->text('<p class="text-error small">'.implode('<br/>', $error['email']).'</p>');
}
$form->text('</span></li>');
$form->text('<li class="clear clearfix">');
$form->text('<span class="row_title regstyle">'.Lang::__('Пароль').':</span>');
$form->text('<span class="row_data">');
$form->input(false,'password','password',false,false,'',true,'','<span id="result"></span>','','password');
if(isset($error['password'])) {
$form->text('<p class="text-error small">'.implode('<br/>', $error['password']).'</p>');
}
$form->text('</span></li>');
$form->text('<li class="clear clearfix">');
$form->text('<span class="row_title regstyle">'.Lang::__('Повторите').':</span>');
$form->text('<span class="row_data">');
$form->input(false,'password2','password',false);
$form->text('</span></li><div class="modal-footer">');
$form->submit('Регистрация','submit',false,'btn btn-success');
$form->text('<a class="btn" href="/index.php">Отмена</a>');
$form->display();
echo '</div></ul></div>';
break;
endswitch;