Привет, я относительно новичок в 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"];
После отправки
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'] ); }