Помогите создать проверку на уникальность пользователя для бд. PHP 7, MySQLI
Здравствуйте, вот учусь PHP, попеременно используя MySQLI, проблема состоит в том, что я создал форму для регистрации, заносит он её в бд, но мне нужно сделать проверку на уникальность и, следовательно, нужно для авторизации пользователя. Вот уже 3-й день не могу разобраться
if ( isset($data[‘do_signup’]) ) $login=($data[‘login’]);
$email=($data[’email’]);
$password=($data[‘password’]);
$r_password=($data[‘r_password’]);
if ($password==$r_password) $password=md5($password);>
else echo(‘Пароли не совпадают’);>
$sql ;
if ($connect->query($sql) === TRUE) echo ‘Вы успешноЗарегестрированны’;
>
else die(‘Ой, что-то пошло не так!’);
https://stackoverflow.com/questions/15461765/check-if-username-exist-activated-in-database-using-mysqli
Я не совсем понимаю как использовать эти данные. Мне стоит убрать проверку с коннектом и подставить пример? За ранее сорри)
if ( isset($data[‘do_signup’]) ) $login=($data[‘login’]);
$email=($data[’email’]);
$password=($data[‘password’]);
$r_password=($data[‘r_password’]);
if ($password==$r_password) $password=md5($password);>
else echo(‘Пароли не совпадают’);>
$sql ;
$result = mysqli_query($connect, «SELECT * FROM log WHERE login='».$login.»‘ AND activate=’0′»);
if ($result->num_rows) echo ‘Вы успешноЗарегестрированны’;
>
else
die(‘Ой, что-то пошло не так’);
>
забань плиз Мыслитель (6202) стоп. вы сказали вам нужно проверить зарегистрирован ли логин — так и проверяйте этим запросом с учётом вашей структуры бд. логика: запрос на сервер если существует пользовтаель, ошибка не существует, создаём
Как проверить на уникальность логин?
Как проверить уникальность текста
Когда продают тексты на форуме, говорят, что они проверяли их каким-то программами или сайтами на.
Как проверить сайт на уникальность
Я пишу статьи сам, перевожу уроки тоже.. бывает покупаю переводы/статьи, но все они уникальные, на.
Как проверить массив на уникальность?
Имеется массив: $mas = , , , ] Как мне перебрать его на уникальные значения name и day, и в.
Как проверить уникальность статьи?
Подскажите как проверить уникальность статьи? Как можно проверить, дату появления той или иной.
Сообщение от TVPNERO
Юзер тыкнул отправку формы -> залезли в БД, проверили -> если ошибка, показываем юзеру форму с просьбой изменить логин.
Сообщение от Jewbacabra
Обязательно.
Но валидацию проводить всё равно нужно, чтобы выдать не просто «Ошибка регистрации», а «Данный логин занят».
Сообщение от TVPNERO
Оно выдаст ошибку, которую Вы должны будете корректно обработать и уже выдать: «Ошибка регистрации». Но поскольку запрос может не выполниться не только из-за занятого логина — мы не сможем уточнить пользователю, что именно произошло — записать не удалось или же логин занят. Поэтому придётся выдавать общее нечто.
Para bellum, к этому еще дойти нужно,спасибо за советы.
застрял на этапе добавления логина и пароля.Интересно что логин добавляется в бд а пароль нет.
Если не удастся решить — сразу покажите SQL-запрос в итоговом виде (с уже подставленными значениями из переменных). А также скажите тип поля для пароля.
а поля имеют такие типы данных
для пароля int
для логина char
для айдиюзера int
Сообщение от TVPNERO
Para bellum, не помогло,и логин почему то тоже перестал добавлятся.
Добавлено через 3 минуты
Para bellum, Все получилось
логин перестал работать ибо случайно стер запятую, а пароль стал добавляться.Благодарю.
Добавлено через 6 минут
Para bellum, А как сделать столбец столбец с логином UNIQUE.
не вижу в php admin такой опции
Добавлено через 17 минут
Para bellum,
Я попробовал так прописать,но не действует.Все равно добавляет логин одинаковый и не выводит сообщение
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
$log=$_POST['login']; $pas=$_POST['pasword']; //$data=date("Y-m-d H:i:s"); $db = new mysqli('localhost','root','','forma_bd'); if (mysqli_connect_errno()) { echo "Ошибка: Не удалось установить соединение" . " с базой данных. Повторите попытку позже."; exit; } $query ="select login_user from users order by data desc"; $result = $db->query($query); if($result===$log){ echo "Етот логин занят"; exit; } if(!empty($log)){ $query ="INSERT INTO `users`(`login_user`,`pasword_user`) VALUES ('$log','$pas')"; $result = $db->query($query); //echo ""; //header('Location:http://localhost/proba/demo.php'); }
Добавлено через 1 час 11 минут
Para bellum,Удалось создать столбец UNIQUE попробовал вот так сделать проверку на уникальность
$log=$_POST['login']; $pas=$_POST['pasword']; //$data=date("Y-m-d H:i:s"); $repasword=$_POST['repasword']; $mail=$_POST['email']; if(mysql_num_rows(mysql_query('SELECT login_user FROM users WHERE login_user="'.$.log'"')) > 0) echo 'Данный логин уже зарегистрирован!';
Но сгенерировалась ошибка
Parse error: syntax error, unexpected ‘.’, expecting variable (T_VARIABLE) or ‘$’ in D:\OpenServer\domains\localhost\forma\i.php on line 82
Как сделать проверку на Уникальность логина и почты?
Здравствуйте, вот учусь PHP, попеременно используя MySQLI, проблема состоит в том, что я создал форму для регистрации, заносит он её в бд, но мне нужно сделать проверку на уникальность и, следовательно, нужно для авторизации пользователя. Вот уже 3-й день не могу разобраться
else < echo('Пароли не совпадают');>$sql ="INSERT INTO log (login,password,email) VALUES ('$login','$password','$email')"; if ($connect->query($sql) === TRUE) < echo 'Вы успешноЗарегестрированны'; >else < die('Ой, что-то пошло не так!'); >> ?>
" placeholder="Ваш Логин" required> "placeholder="Ваша Почта" required> "placeholder="Ваш Пароль" required> "placeholder="Повторите Пароль" required> Регистрация
Простой 1 комментарий
Проверять надо на уник емайла, логин-то зачем проверять. обожимой. и на каждый емайл по одному логину разрешить. вот и все, все гениальное просто.
а вообще вам конечно же что-то одно для начала плотненько изучить, а то получать тут бан вам думаю будет не очень приятно.
Во первых, разберитесь с форматированием кода. С таким форматированием вообще никогда не разберетесь.
Традиционная ссылка для начинающих в PHP https://www.phptherightway.com/
Традиционная ссылка по хешированию паролей php.net/manual/ru/faq.passwords.php
Так же гуглим готовые решения по аутентификации/авторизации. Пример https://cartalyst.com/manual/sentinel/2.0
Традиционная ссылка на документацию по PDO php.net/manual/ru/book.pdo.php
Не подставляйте переменные в запрос, гуглим «SQL-иньекции».
Никогда не используйте подавление ошибок («@»). Никогда не включайте необработанный пользовательский ввод в HTML и вообще в любой ответ сервера. Гуглим «XSS-иньекции».
Если файл содержит только код PHP, предпочтительно опустить закрывающий тег в конце файла. Это помогает избежать добавления случайных символов пробела или перевода строки после закрывающего тега PHP, которые могут послужить причиной нежелательных эффектов, так как PHP начинает выводить данные в буфер при отсутствии намерения у программиста выводить какие-либо данные в этой точке скрипта.
Проверку на уникальность делается обычным SQL запросом на получение пользователя с введенным логином. Уникальность пользователя с определенным логином гарантируется уникальным индексом на уровне БД.
Основной принцип такой: сперва изучаем, узнаем как правильно, потом уже пытаемся реализовать, а не мучаемся 3 дня с двумя строчками кода.
А прежде чем задать вопрос указываем что конкретно не получилось и какая ошибка.
Проверка на уникальность логина
Здравствуйте.
Я новичек в БД и пхп, учусь и создаю регистрацию пользователей на php. И зашел вопрос по поводу страницы редактирования данных. У меня нас странице редактирования можно изменить данные во всех полях, но поле «login» должно оставаться уникальным. Хотя его тоже можно изменить. По значению «login» пользователь входит к себе в профиль. Когда переходишь на страницу редактирования, во всех полях уже есть данные пользователя, они выходят из БД, это сделано для того, чтобы ему по новой не пришлось всё вводить.
Что хочу сделать (алгоритм):
Если ново введенный «login», который только что ввел пользователь во время редактирования своей стр. в таблице базы данных уже есть, то выполняем проверку:
если да, то — если новый «login» — это и есть логин этого же пользователя, то оставляем как есть, не заносим в таблицу БД, а если не этого пользователя, который редактируется, значит поставить «die».
если нет, то — если же нету такого логина больше в БД, то заносим в таблицу.
У меня регистрация на сессиях.
Добавлено через 16 минут
Есть страница редактирования данных пользователя edit.php. На этой странице расположены формы для ввода текста. Есть например, четыре формы:
1. login — уникальное значение логин
2. name — не уникальное значение имя
3. surname — не уникальное значение фамилия
4. city — не уникальное значение город
Когда вы переходите на эту страницу, то в полях уже есть данные, которые есть на вас в таблице «users» БД. Чтобы по новой, каждый раз не вводить. Соответственно, если вы зашли поменять, например город, то поле «логин» вы не троните и оно останется таким, каким и было. Мне надо сделать проверку на уникальность логина, чтобы знать, что этот логин один на всю таблицу БД и проверку на владельца логина. Т.е. если вы внесли изменения в поле логин, значит надо узнать, нету ли «нового логина» такого же где нибудь в таблице БД. Если нету, то заносим спокойно в таблицу. Если есть, то выполняем проверку чей он, потому что если вы не трогали поле логин, ваш логин там и останется и при выполнении проверки на уникальноть — вам выбьет ошибку, что такой логин уже существует, соответственно проверка на чей логин может помочь узнать, чей это логин. Если это логин этого пользователя, который редактирует сейчас свои данные, то оставляем все как есть. Если не его, а чей-то, то пишем, что такой логин уже есть.