/
register.php
81 lines (76 loc) · 3.57 KB
/
register.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?php
require_once('./config/require.php');
//если запрещен просмотр информации
//и мы не в админском режиме - делаем перенаправление на страницу с сообщением
if (!_permission_allow_register_new_user && $is_admin != 1) { authorize(); }
// проверка на спам
if (isset($regbtn)) {
if (time() - $register_lastaccess < antiSpamTimeOut) {
$message = 'В целях защиты от спама не разрешается делать попытки отправления данных с интервалом между ними менее '.antiSpamTimeOut.' секунд. Попробуйте повторить запрос позже.';
} else {
$register_lastaccess = time();
}
} // конец проверки на спам
// проверка присланных данных
// todo: дата рождения
if (isset($regbtn) && !isset($message)) {
if (!$passrep || !$newpass || !$login || !$nickname /*|| !$name*/) { $message = 'Не заполнено одно или несколько из обязательных полей ввода. Введите необходимые данные'; }
elseif ($newpass!=$passrep) { $message = 'Повтор пароля некорректен.'; }
elseif (!LoginCorrect($login)) { $message = 'Неверно введен login. Длина строки не должна превышать 50 символов. '; }
elseif (!PassCorrect($newpass)) { $message = 'Неверно введен пароль. Длина строки не должна превышать 20 символов. '; }
elseif (!NicknameCorrect($nickname)) { $message = 'Неверно введен nick. Длина строки не должна превышать 50 символов. '; }
elseif (!CheckSym($passrep) ||
!CheckSym($newpass) ||
!CheckSym($login) ||
!CheckSym($nickname)) {
$message = 'Одно из полей ввода содержит недопустимые символы.';
}
} //конец проверки присланных данных
// коррекция данных и попытка создания пользователя
if (isset($regbtn) && !isset($message)) {
//попытка зарегистрировать данные
$q = $mysqli_->prepare('INSERT INTO `user`(login, `password`, nickname, regdate, teamid) VALUES(?, password(?), ?, NOW(), -1)');
$q->bind_param('sss', $login, $newpass, $nickname);
$success = $q->execute() || 0 == $q->affected_rows;
$userId = $mysqli_->insert_id;
$q->close();
if (!$success) {
$message = 'Регистрация не удалась. Возможно, пользователь с таким nickname\'ом уже существует.';
} else {
// создаем одноименную команду
// сначала пытаемся вытащить команду с таким же name как nickname пользователя
$q = $mysqli_->prepare('SELECT teamname from Teams where teamname = ?');
$q->bind_param('s', $nickname);
if ($q->execute()) {
$fetched = $q->fetch();
$q->close();
// запрос на добавление команды
$q = $mysqli_->prepare('INSERT INTO teams(teamname, education, city) VALUES(?, \'\', \'\')');
$teamname = $nickname.($fetched ? time() : '');
$q->bind_param('s', $teamname);
$q->execute();
$teamId = $mysqli_->insert_id;
$q->close();
// запрос на добавление пользователя
$q = $mysqli_->prepare('INSERT INTO members(userid, teamid) VALUES(?, ?)');
$q->bind_param('ii', $userId, $teamId);
$q->execute();
$q->close();
} else {
$q->close();
}
}
//конец попытки изменить данные
} // конец попытки создания пользователя
// успешная регистрация
if (isset($regbtn) && !isset($message)) {
data('message', 'Регистрация прошла успешно');
template('message', $data);
} else { // прочие случаи
if (isset($message)) { data('message', $message); }
data('login', isset($login) ? $login : '');
data('nickname', isset($nickname) ? $nickname : '');
data('teamname', isset($teamname) ? $teamname : '');
template('register', $data);
}
?>