@lemonlimelike

Правильно ли я делаю регистрацию?

if(isset($_POST['sign'])){
		if(empty($_POST['email'])){
			echo "Поле email пустое";
		}elseif(empty($_POST['login'])){
			echo "Поле login пустое";
		}elseif(empty($_POST['password1'])){
			echo "Поле password1 пустое";
		}elseif(empty($_POST['password2'])){
			echo "Поле password2 пустое";
	}

	if(!empty($_POST['email']) and !empty($_POST['login']) and !empty($_POST['password1']) and !empty($_POST['password2'])){
		$reg_insert = $pdo->prepare("INSERT INTO reg (email, login, password) VALUES (".$_POST['email'].", ".$_POST['login'].", ".$_POST['password1'].")");
	}else{
		echo "не все заполнено";
	}


Делаю регистрацию, но не знаю если я все правильно делаю, скажите пожалуйста, правильно ли я делаю? и почему не заносятся данные? точнее я знаю почему, я не закончил pdo, а как его закончить, дальше что писать?
  • Вопрос задан
  • 150 просмотров
Решения вопроса 1
iqw
@iqw
Serior Software Engineer
Из официальной документации PDO (php.net/manual/ru/pdo.prepared-statements.php):
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value);

$stmt->execute();


Тоесть Вы запрос подготовили, но не выполнили. Так же нужно заменить прямую вставку переменной - параметром, который позже установить с помощью метода bindParam. С точки зрения логики работы - все должно получиться, с точки зрения архитектуры функционала аутентификации - Ваш код небезопасен, монструозен и непереносим, советую использовать готовые библиотеки для реализации данного функционала, или же следовать гайдам, например - https://daveismyname.blog/login-and-registration-s...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы