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

привет, я относительно новичок в 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"];
 Fabio30 мая 2013 г., 13:39
Вам нужно разместить больше кода
 Yogesh Suthar30 мая 2013 г., 13:42
Удалитьecho послеheader и положи .exit()
 Ronnie Jespersen30 мая 2013 г., 13:39
Я думаю, что $ row не является нулевым.

Ответы на вопрос(1)

Решение Вопроса

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

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'] );
}
 user241698030 мая 2013 г., 13:47
Как бы вы поступили так, что я новичок во всей сцене программирования, так что меня это смущает, я понимаю, к чему вы клоните, но я все еще смущен
 Sirko30 мая 2013 г., 14:15
@ user2416980 В зависимости от конфигурации сервера, вашlogin.html возможно будет проанализирован как PHP. В этом случае вы можете просто вставить соответствующий код. В противном случае вам нужно переименовать его в.login.php
 Sirko30 мая 2013 г., 13:54
@ user2416980 Смотрите мои изменения.
 user241698030 мая 2013 г., 14:05
будет ли это включать изменение моего login.html в login.php, чтобы установить сеанс при его запуске, или это все в long.php?

Ваш ответ на вопрос