@Arlange1n

Как сделать проверку на Уникальность логина и почты?

Здравствуйте, вот учусь PHP, попеременно используя MySQLI, проблема состоит в том, что я создал форму для регистрации, заносит он её в бд, но мне нужно сделать проверку на уникальность и, следовательно, нужно для авторизации пользователя. Вот уже 3-й день не могу разобраться
<?php 
require 'db.php';

$data = $_POST;

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 ="INSERT INTO log (login,password,email)
VALUES ('$login','$password','$email')";
if ($connect->query($sql) === TRUE) {
echo 'Вы успешноЗарегестрированны';
}
else {
die('Ой, что-то пошло не так!');

}

}

?>


<input type="text" name="login" value="<?php echo @$data['login']; ?>" placeholder="Ваш Логин" required>

<input type="email" name="email" value="<?php echo @$data['email']; ?>"placeholder="Ваша Почта" required>

<input type="password" name="password" value="<?php echo @$data['password']; ?>"placeholder="Ваш Пароль" required>

<input type="password" name="r_password" value="<?php echo @$data['r_password']; ?>"placeholder="Повторите Пароль" required>
Регистрация
  • Вопрос задан
  • 2558 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Yan-s
Во первых, разберитесь с форматированием кода. С таким форматированием вообще никогда не разберетесь.

Традиционная ссылка для начинающих в PHP https://www.phptherightway.com/

$password = md5($password);

Традиционная ссылка по хешированию паролей php.net/manual/ru/faq.passwords.php
Так же гуглим готовые решения по аутентификации/авторизации. Пример https://cartalyst.com/manual/sentinel/2.0

$sql ="INSERT INTO log (login,password,email)
VALUES ('$login','$password','$email')";

Традиционная ссылка на документацию по PDO php.net/manual/ru/book.pdo.php
Не подставляйте переменные в запрос, гуглим "SQL-иньекции".

Никогда не используйте подавление ошибок ("@"). Никогда не включайте необработанный пользовательский ввод в HTML и вообще в любой ответ сервера. Гуглим "XSS-иньекции".

?>

Не ставьте ?> в конце PHP файла так как:
Если файл содержит только код PHP, предпочтительно опустить закрывающий тег в конце файла. Это помогает избежать добавления случайных символов пробела или перевода строки после закрывающего тега PHP, которые могут послужить причиной нежелательных эффектов, так как PHP начинает выводить данные в буфер при отсутствии намерения у программиста выводить какие-либо данные в этой точке скрипта.

php.net/manual/ru/language.basic-syntax.phptags.php

Проверку на уникальность делается обычным SQL запросом на получение пользователя с введенным логином. Уникальность пользователя с определенным логином гарантируется уникальным индексом на уровне БД.

Основной принцип такой: сперва изучаем, узнаем как правильно, потом уже пытаемся реализовать, а не мучаемся 3 дня с двумя строчками кода.

А прежде чем задать вопрос указываем что конкретно не получилось и какая ошибка.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы