Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 05.03.2021
Сообщений: 2

Как сделать проверку на наличие пользователя в базе данных?

05.03.2021, 23:04. Показов 3993. Ответов 3

Студворк — интернет-сервис помощи студентам
Здравствуйте, при регистрации необходимо сделать проверку на пользователя. Если в базе данных уже есть такое же имя, что вводит пользователь для регистрации, то должна выдаваться ошибка.
Для того что бы сделать проверку я ее написала, таким образом, что сначала идет проверка на существует ли такой пользователь в б.д, если нет то регистрируем пользователя. Если такое имя есть то выводит ошибку. Но все равно ошибку не выводит. Подскажите, пожалуйста, где я допустила ошибку.

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
<?php
    require 'DB.php';
 
    class UserModel {
        private $name;
        private $email;
        private $pass;
        
 
        private $_db = null;
 
        public function __construct() {
            $this->_db = DB::getInstence();
        }
 
        public function setData($name, $email, $pass) {
            $this->name = $name;
            $this->email = $email;
            $this->pass = $pass;
            
        }
 public function validForm() {
 
            $result = $this->_db->query("SELECT COUNT(`id`) AS `count` FROM `users` WHERE `name` = '$name'");
            $user = $result->fetch(PDO::FETCH_ASSOC);
            
 
            
            if(strlen($this->name) < 3)
                return "Имя слишком короткое";
            else if(($user['count'] != 0)
         return 'Пользователь с таким логином существует';
            else if(strlen($this->email) < 3)
                return "Email слишком короткий";
            else if(strlen($this->pass) < 3)
                return "Пароль не менее 3 символов";
            else
                return "Верно";
            
        }
 
public function addUser() {
        
 
            $sql = 'INSERT INTO users(name, email, pass) VALUES(:name, :email, :pass)';
            $query = $this->_db->prepare($sql);
 
            $pass = password_hash($this->pass, PASSWORD_DEFAULT);
            $query->execute(['name' => $this->name, 'email' => $this->email, 'pass' => $pass]);
 
            $this->setAuth($this->name);
            
        }
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
    class User extends Controller {
        public function reg() {
 
            $data = [];
            if(isset($_POST['name'])) {
                $user = $this->model('UserModel');
                $user->setData($_POST['name'], $_POST['email'], $_POST['pass']);
                
 
                $isValid = $user->validForm();
                if($isValid == "Верно")
                    $user->addUser();
                else
                    $data['message'] = $isValid;
            }
 
            $this->view('user/reg', $data);
        }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.03.2021, 23:04
Ответы с готовыми решениями:

Как сделать проверку пользователя в базе данных Sql Python
Всем привет такой вопрос я создал бота в телеграмм и хочу чтобы данные из бота были доступны только авторизированным пользователям. Я...

Как сделать проверку на наличие пользователя по паролю?
И так, доброго времени суток. У нас есть список пользователей, в задании сказано, удалить одного из пользователей по заданному паролю с...

Как сделать проверку в таблице на наличие данных?
Здоровья уважаемые! Собственно столкнулся с маааленькой и слегка неудобной проблемкой. Итак дано 2 таблицы которые суммируются,...

3
Невнимательный
 Аватар для ft4l
3112 / 1290 / 359
Регистрация: 08.02.2013
Сообщений: 7,566
Записей в блоге: 2
06.03.2021, 18:44
Цитата Сообщение от Sticy Посмотреть сообщение
WHERE `name` = '$name'
похоже $name не пределена,
для отладки, иногда, надо в начале
PHP
1
2
error_reporting(-1);
ini_set('display_errors', 1);
... и возможно как-то так
PHP
24
            $result = $this->_db->query("SELECT COUNT(`id`) AS `count` FROM `users` WHERE `name` = ". $this->_db->quote($this->name) );

Не по теме:

Цитата Сообщение от Sticy Посмотреть сообщение
PHP
29
            if(strlen($this->name) < 3)
если с utf-8 всё работает, то как-бы strlen() это не символов , а байт...

+ как-бы логичнее сначала проверить подходящее-ли имя, и только если нет, выполнять запрос.
... или как-то так, НО в пределах разумного ))
Иногда бесят такие проверки )) вводишь кучу данных, тебе пишет что первая строчка не правильно.
вводишь снова кучу данных пишет что имя занято
вводишь снова другое, пишет что пароль оказывается не очень.
имейл не проходит, имейл занят, ...
и так много-много раз вводишь :)
? или Почему не сделать вывод пояснений кучно но логично, как для людей ))
Точнее как для себя, любимых,) хотелось-бы чтобы делали все .)
... Но у Вас не тот случай наверно :) всего-то надо всё по 3 байта
массив сообщений, что не по 3 ,) или сообщение что где-то занято

0
0 / 0 / 0
Регистрация: 05.03.2021
Сообщений: 2
06.03.2021, 21:07  [ТС]
Спасибо Вам за помощь! К сожалению не сработало. Я сейчас учусь и просто такое задание у меня, сделать проверки таким образом .
0
Невнимательный
 Аватар для ft4l
3112 / 1290 / 359
Регистрация: 08.02.2013
Сообщений: 7,566
Записей в блоге: 2
07.03.2021, 01:26
Цитата Сообщение от Sticy Посмотреть сообщение
не сработало
Затрудняюсь сказать что ещё могло пойти не так.
... если поставили в начале скрипта это error_reporting(-1);
и не видите никаких сообщений ни на странице ни в error_log значит что-то не то ))
... только сейчас заметил что в строке
Цитата Сообщение от Sticy Посмотреть сообщение
PHP
31
            else if(($user['count'] != 0)
лишняя открывающая (
Это вообще должно было отвалиться с ошибкой синтаксиса.
...Если специально ничего не сделать трудно-понимаемым,
то в error_log должно что-то попадать однозначно с такой ошибкой, и в более случаях, если error_reporting(-1);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.03.2021, 01:26
Помогаю со студенческими работами здесь

Как сделать проверку на существующий логин в базе данных MySql
Здравствуйте. Помогите пожалуйста. Хочу в этот код добавить проверку на существующий логин. &lt;html&gt; &lt;head&gt; &lt;meta...

Как сделать проверку на наличие данных в результатах запроса "q" и только если они есть выполнить код
Выполнен запрос &quot;q&quot; Есть рабочий код , но он работает только при условии если в запросе &quot;q&quot; есть строки. Если данные...

Как сделать проверку наличие листа?
Нужна помощь в написании формулы, смысл такой: листы в книге пронумерованы 1,2,3,4...31 (дни месяца), они добавляются, в эту книгу...

В базе данных необходимо в форме сделать непростую проверку
В общем суть. Есть база данных Ж/Д-рейсов. Как расписание. У каждого рейса есть закрепленный машинист и поезд. Есть время отправления от...

Как сделать проверку на наличие пробелов в строке ?
...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru