Сообщение об ошибке echo pdo при вводе неверного имени пользователя или пароля

Привет, я относительно новичок в pdo (php), и я создал базовую систему входа в систему, я знаю, что она еще не защищена, но я просто экспериментирую в любом случае, я знаю, что в старой php вы можете эхо-сообщение и сообщение об ошибке в выражении if, но это теперь, похоже, больше не работает, мой сценарий – это то, что я делаю что-то неправильно или просто не могу сделать это в pdo.

if ($row == null){ header( "location: login.html"); echo "login failed"; } else{ header("location: homepage.php"); } 

я понимаю, что у этого может быть недостаточно кода, так что вот остальная часть скрипта

 session_start(); //connection String $connection = new PDO("sqlsrv:server=server;Database=database", "username", "password"); //Seelcting function $smt = $connection->prepare("select user_id, username from account where username = :username and password =:password"); //setting values to textboxes $username = $_POST["txt_username"]; $password = $_POST["txt_password"]; //binding values $smt->bindValue(':username', $username); $smt->bindValue(':password', $password); //execution $smt->execute(); //fetching data $row = $smt->fetch( PDO::FETCH_ASSOC ) ; echo "$row[user_id]\n\n"; echo "$row[username]\n\n"; $_SESSION{"user_id"} = $row["user_id"]; 

Related of "Сообщение об ошибке echo pdo при вводе неверного имени пользователя или пароля"

После отправки

 header( "location: login.html"); 

браузер переадресовывает этот новый файл ( login.html ) и игнорирует (почти) любой дальнейший вывод.

Выполните отображение сообщения на login.html позже, вам нужно использовать какой-либо механизм для передачи сообщения на эту страницу, например, с помощью переменной сеанса.

РЕДАКТИРОВАТЬ

Команда header отправляет некоторые данные в браузер перед фактическим контентом. Если вы сделаете переадресацию браузера с помощью заголовка, пользователь никогда не увидит контент.

Поэтому вам нужно каким-то образом довести содержимое до следующей страницы, к которой вы перенаправляетесь.

Одна из возможностей – использовать переменную сеанса.

 if ($row == null){ $_SESSION['errormsg'] = "login failed"; header( "location: login.php"); } else{ header("location: homepage.php"); } 

В login.php вы можете отреагировать на это сообщение, если оно присутствует:

 if( isset( $_SESSION['errormsg'] ) ) { // do the output echo $_SESSION['errormsg']; // delete the message from the session, so that we show it only once unset( $_SESSION['errormsg'] ); }