ArBitr_exe
@ArBitr_exe
Начинающий Web-разработчик

Почему не работает запрос на php + PDO?

Всем доброго времени суток, пишу скрипт авторизации на PDO, так получилось, что запрос не работает в коде, хотя когда я эту строку с данными ввожу в phpmy admin или в query browser то он срабатывает и возвращает результат, объясните дуболому, где я мог накосячить?
Файл соединения:
<?php 
	$serverName = "localhost";
	$userName = "root";
	$password = "";
	$dataBase = "matrix";
	try {
		$connection = new PDO ("mysql:host=$serverName; dbname=$dataBase", $userName, $password);
	}
	catch (PDOException $e) {
		echo "Соединение не установлено, ошибка: ".$e->getMessage();
	}
?>

Движок:
<?php
	include_once $_SERVER['DOCUMENT_ROOT'].'/includes/connection.php';

	try {
		$login = $_POST['login'];
		$password = $_POST['password'];
		$otdel = $_POST['otdel'];

		$selectUser = "SELECT login, password, otdel FROM `user_s` WHERE login='".$login."' AND password='".$password."';";
		echo $selectUser;

		$result = $connection->exec($selectUser);

		echo "<br>".$result."<br>";
		if ($result === 1) {
			echo "<br>true";
			
		}
		else {
			echo "<br>false";
		}

		
	}

	catch (PDOException $e) {
		echo "system of down";
		exit();
	}
?>
  • Вопрос задан
  • 768 просмотров
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Накосячено здесь везде. В каждой строчке. Но самая ерунда написана в комментариях.

> я всегда делаю, чтобы сначала работало, а потом делаю защиту и "секьюрность".

Придется избавляться от этой дурацкой привычки. Во-первых, это дорога в никуда. С такими идеями твой код всегда будет кривым. Во-вторых, это тупо двойная работа - сначала говнокодить, а потом переписывать набело. И в-третьих, нормальный код проще и удобнее говнокода. Поэтому если не умеешь работать с ПДО - надо учиться. СНАЧАЛА учиться, а потом пытаться что-то писать.

Файл соединения:
<?php 
$serverName = "localhost";
$userName = "root";
$password = "";
$dataBase = "matrix";
$pdo = new PDO ("mysql:host=$serverName; dbname=$dataBase", $userName, $password);
$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );


"Движок" берем отсюда, https://phpdelusions.net/pdo_examples/password_hash

$stmt = $pdo->prepare("SELECT login, password, otdel FROM `user_s` WHERE login=?");
$stmt->execute([$_POST['login']]);
$user = $stmt->fetch();

if ($user && password_verify($_POST['password'], $user['password']))
{
    echo "valid!";
} else {
    echo "invalid";
}


Не забыв предварительно хэшировать все пароли перед записью в БД через password_hash.

А ответ на вопрос, почему у тебя не работает сейчас, можешь прочесть в документации по exec(). Там написано.
Ответ написан
Ваш ответ на вопрос

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

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