Лучше сделать это объектно-ориентированным способом, я делаю это в своих проектах следующим образом:
//check if user logged in
if(isset($_POST['sign_in'])):
try
{
$userlogin = new User();
$userlogin->loginusername = mysqli_real_escape_string($link, $_POST['username']);
$userlogin->password = mysqli_real_escape_string($link, $_POST['password']);
$userlogin->login();
}
catch(Exception $e)
{
header("Location: ".$siteurl."login.php?login=failed");
}//end of catch exception
endif;//end of if user logged in
в функции login () в моем классе пользователя. Я проверяю правильность имени пользователя, если нетсгенерирует исключение (ошибку), которое будет поймано ведьмой (см. catch (исключение ...)).Затем я перенаправляю на другую страницу, но вы можете сохранить сообщение об ошибке в такой переменной, как это:
$feedback = $e->getMessage();
, а затем просто отправить отзыв в любом месте на вашей странице
РЕДАКТИРОВАТЬ: это моефункция входа в мой класс пользователя (просто подумал, что добавлю и ее)
public function login()
{
global $link;
$sql = mysqli_query($link, "SELECT userid, unique_id, username, password FROM user_extra WHERE username='".$this->loginusername."' AND password='".md5($this->password)."'");
//there can only be one user with this username and password
if(mysqli_num_rows($sql) == 1):
$result = mysqli_fetch_object($sql);
//sessions
$_SESSION['userid'] = $result->userid;
$_SESSION['username'] = $result->username;
$_SESSION['unique_id'] = $result->unique_id;
//cookies
$expire=time()+60*60*24*30;
setcookie("userid", $result->userid, $expire, "/");
setcookie("password", $result->password, $expire, "/");
else:
throw new exception("Login failed");
endif;
}//end of function login