Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
 Аватар для [FENIX]
4 / 4 / 2
Регистрация: 09.10.2009
Сообщений: 546

Не получается сделать форму авторизации

04.08.2016, 10:00. Показов 1121. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Пробую сделать форму авторизации вот тут: http://youran88.hol.es/

Ввожу логин и пароль - они верные, и в базе они точно есть. Но вот что-то видать sql-запрос неверно составлен, или ещё что, помогите пожалуйста.

functions.php:
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
<?
 
/**
  * functions.php
  * Файл с пользовательскими функциями
  */
  
// Подключаем файл с параметрами подключения к СУБД
require_once('database.php');
 
// Проверка имени пользователя
function checkLogin($str) {
    // Инициализируем переменную с возможным сообщением об ошибке
    $error = '';
    
    // Если отсутствует строка с логином, возвращаем сообщение об ошибке
    if(!$str) {
        $error = 'Вы не ввели имя пользователя';
        return $error;
    }
    
    /**
      * Проверяем имя пользователя с помощью регулярных выражений
      * Логин должен быть не короче 4, не длиннее 16 символов
      * В нем должны быть символы латинского алфавита, цифры, 
      * в нем могут быть символы '_', '-', '.'
      */
    $pattern = '/^[-_.a-z\d]{4,16}$/i'; 
    $result = preg_match($pattern, $str);
    
    // Если проверка не прошла, возвращаем сообщение об ошибке
    if(!$result) {
        $error = 'Недопустимые символы в имени пользователя или имя пользователя слишком короткое (длинное)';
        return $error;
    }
    
    // Если же всё нормально, вернем значение true
    return true;
}
 
// Проверка пароля пользователя
function checkPassword($str) {
    // Инициализируем переменную с возможным сообщением об ошибке
    $error = '';
    
    // Если отсутствует строка с логином, возвращаем сообщение об ошибке
    if(!$str) {
        $error = 'Вы не ввели пароль';
        return $error;
    }
    
    /**
      * Проверяем пароль пользователя с помощью регулярных выражений
      * Пароль должен быть не короче 6, не длиннее 16 символов
      * В нем должны быть символы латинского алфавита, цифры, 
      * в нем могут быть символы '_', '!', '(', ')'
      */
    $pattern = '/^[_!)(.a-z\d]{6,16}$/i';   
    $result = preg_match($pattern, $str);
    
    // Если проверка не прошла, возвращаем сообщение об ошибке
    if(!$result) {
        $error = 'Недопустимые символы в пароле пользователя или пароль слишком короткий (длинный)';
        return $error;
    }
    
    // Если же всё нормально, вернем значение true
    return true;
}
 
// Функция регистрации пользователя
function registration($login, $password) {
    // Инициализируем переменную с возможным сообщением об ошибке
    $error = '';
    
    // Если отсутствует строка с логином, возвращаем сообщение об ошибке
    if(!$login) {
        $error = 'Не указан логин';
        return $error;
    } 
    elseif(!$password) {
        $error = 'Не указан пароль';
        return $error;
    }
    
    // Проверяем не зарегистрирован ли уже пользователь
    // Подключаемся к СУБД
    connect();
    
    $link = mysqli_connect("mysql.hostinger.ru", "u260225172_root", "509912", "u260225172_users");
 
 
    // Пишем строку запроса
    $sql = "SELECT `id` FROM `users` WHERE `login`='" . $login . "'";
    // Делаем запрос к базе
    $query = mysqli_query($link, $sql) or die("<p>Невозможно выполнить запрос: " . mysql_error() . ". Ошибка произошла в строке " . __LINE__ . "</p>");
    // Смотрим на количество пользователей с таким логином, если есть хоть один,
    // возвращаем сообщение об ошибке
    if(mysqli_num_rows($query) > 0) {
        $error = 'Пользователь с указанным логином уже зарегистрирован';
        return $error;
    }
    
    // Если такого пользователя нет, регистрируем его
    // Пишем строку запроса
    $sql = "INSERT INTO `users` 
            (`id`,`login`,`password`) VALUES 
            (NULL, '" . $login . "','" . $password . "')";
    // Делаем запрос к базе
    $query = mysqli_query($link, $sql) or die("<p>Невозможно добавить пользователя: " . mysql_error() . ". Ошибка произошла в строке " . __LINE__ . "</p>");
    
    // Не забываем отключиться от СУБД
    mysqli_close($link);
    
    // Возвращаем значение true, сообщающее об успешной регистрации пользователя
    return true;
}
 
/**
  * Функция авторизации пользователя.
  * Авторизация пользователей у нас будет осуществляться
  * с помощью сессий PHP.
  */
function authorization($login, $password) {
    // Инициализируем переменную с возможным сообщением об ошибке
    $error = '';
    
    // Если отсутствует строка с логином, возвращаем сообщение об ошибке
    if(!$login) {
        $error = 'Не указан логин';
        return $error;
    } 
    elseif(!$password) {
        $error = 'Не указан пароль';
        return $error;
    }
    
    // Проверяем не зарегистрирован ли уже пользователь
    // Подключаемся к СУБД
    connect();
    
    // Нам нужно проверить, есть ли такой пользователь среди зарегистрированных
    // Составляем строку запроса
    $sql = "SELECT `id` FROM `users` WHERE `login`='".$login."' AND `password`='".$password."'";
    //$sql = "SELECT id FROM users WHERE login=".$login." AND password=".$password."";
 
 
    // Выполняем запрос
    
    $conn = mysqli_connect($db_host, $db_user, $db_password, $db_name) or die("<p>Невозможно подключиться к СУБД: " . mysql_error() . ". Ошибка произошла в строке " . __LINE__ . "</p>");
 
    //$query = mysqli_query($conn, $sql) or die("<p>Невозможно выполнить запрос: </p>" . mysql_error()." in ". $sql);
    $query = mysqli_query($conn, $sql) or die("<p>Невозможно выполнить запрос: " . mysql_error() . ". Ошибка произошла в строке " . __LINE__ . "</p>");
 
    // Если пользователя с такими данными нет, возвращаем сообщение об ошибке
    if(mysqli_num_rows($query) == 0)    {
        $error = 'Пользователь с указанными данными не зарегистрирован';
        return $error;
    }
    
    // Если пользователь существует, запускаем сессию
    session_start();
    // И записываем в неё логин и пароль пользователя
    // Для этого мы используем суперглобальный массив $_SESSION
    $_SESSION['login'] = $login;
    $_SESSION['password'] = $password;
    
    // Не забываем закрывать соединение с базой данных
    mysql_close();
 
    // Возвращаем true для сообщения об успешной авторизации пользователя
    return true;
}
 
 
function checkAuth($login, $password) {
    // Если нет логина или пароля, возвращаем false
    if(!$login || !$password)   return false;
    
    // Проверяем зарегистрирован ли такой пользователь
    // Подключаемся к СУБД
    connect();
    
    // Составляем строку запроса
    $sql = "SELECT `id` FROM `users` WHERE `login`='".$login."' AND `password`='".$password."'";
    // Выполняем запрос
    $query = mysql_query($sql) or die("<p>Невозможно выполнить запрос: " . mysql_error() . ". Ошибка произошла в строке " . __LINE__ . "</p>");
    
    // Если пользователя с такими данными нет, возвращаем false;
    if(mysql_num_rows($query) == 0) {
        return false;
    }
 
    // Не забываем закрывать соединение с базой данных
    mysql_close();  
 
    // Иначе возвращаем true
    return true;
}
 
?>
После ввода верного логина и пароля браузер пишет что ошибка в этом файле functions.php в 153 строке. Народ, помогите пожалуйста. Делал всё по примеру вот отсюда: http://www.lezhenkin.ru/exampl... uth-users/
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.08.2016, 10:00
Ответы с готовыми решениями:

Не получается сделать форму
Начал изучать программирование по книге Ларри Ульмана &quot;PHP для начинающих&quot;. Дошел до форм и... не запускается хотя все как в книге. В чем...

Не получается создать форму авторизации
Хочу создать форму авторизации. В базе есть логин и пароль, когда ввожу в соотвествующие поля на странице перекидывает на пустую...

Сделать форму авторизации
Скажите как можно сделать авторизацию в виде формы, есть база MySql и таблица к примеру User как сделать что бы авторизация пользователей...

3
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
04.08.2016, 10:10
PHP
1
2
3
$query = mysqli_query($sql, $conn) or die(
    "<p>Невозможно выполнить запрос: " . mysql_error() . ". Ошибка произошла в строке " . __LINE__ . "</p>"
);
http://php.net/manual/ru/function.mysql-query.php
https://ru.wikipedia.org/wiki/Внедрение_SQL-кода
0
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
04.08.2016, 10:55
Ох уж эти писатели. Даже не удосуживаются прогнать код на разных условиях.

[FENIX], не привыкайте светить данные для доступа в паблике, а то в один прекрасный день это может плохо для вас закончиться. Тут же рядом явно и какая-то нелогичность проскакивает: вызываете connect() и сразу следом опять mysqli_connect().
0
 Аватар для [FENIX]
4 / 4 / 2
Регистрация: 09.10.2009
Сообщений: 546
04.08.2016, 11:03  [ТС]
Охоо, да, действительно это полный фейл, торопился сильно )) спасибо, данные для доступа сменил уже. Сейчас буду разбираться...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.08.2016, 11:03
Помогаю со студенческими работами здесь

Как сделать форму авторизации?
Здравствуйте! Меня интересует такой вопрос: как создать логин и пароль, после ввода которого открывается нужный мне фаил(форма)?

Как сделать форму авторизации
Простая форма авторизации Берет логин и пароль из справочника, где и хранятся данные для авторизации

Сделать форму авторизации на двоих пользователей
Нужно сделать форму авторизации на двоих пользователей, под спойлером наработки AnsiString login1,pass1; AnsiString login =...

Не получается сделать форму редактирования
Есть таблица reas_can_service. В ней 2 поля: id_rea_can и name_reas_can. Не получается сделать форму редактирования, вроде все выводится,...

Не получается сделать форму для регистрации
У меня на моем сайте не получается сделать обычную регистрацию. Вроде бы все норма, но когда нажимаешь на кнопку...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru