Как показывать сообщения об ошибках на странице HTML на PHP?

У меня есть следующая форма входа (login.php), в которой я прошу ввести имя пользователя и пароль.

<form action="processlogin.php" method="post"> <input type="text" name="username"> <input type="password" name="password"> <input type="submit" value="Login"> </form> 

Ниже приведен фрагмент кода из файла processlogin.php

 if(!$_POST["username"] || !$_POST["password"]) { $msg = "You left one or more of the required fields."; echo $msg; //header("Location:http://localhost/login.php"); } 

Этот код проверяет, не заполнены ли все обязательные поля. Если нет, отображается сообщение об ошибке.

До сих пор все в порядке.

Моя проблема заключается в том, что сообщение об ошибке отображается на простой белой странице. Я хочу показать его выше формы входа в файл login.php. Как мне изменить свой код, чтобы получить мою функциональность.

Related of "Как показывать сообщения об ошибках на странице HTML на PHP?"

Я бы предпочел Jquery Validation или Ajax на основе аутентификации. Но все же вы можете сделать это так:

Поместите сообщение об ошибке в сеанс следующим образом:

 $_SESSION['Error'] = "You left one or more of the required fields."; 

Чем просто показать это так:

 if( isset($_SESSION['Error']) ) { echo $_SESSION['Error']; unset($_SESSION['Error']); } с if( isset($_SESSION['Error']) ) { echo $_SESSION['Error']; unset($_SESSION['Error']); } 

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

 header("Location:http://localhost/login.php?x=1") 

В login.php

 if(isset($_GET('x'))){ //your html for error message } 

Вы можете отобразить сообщение в таблице или пробеле выше формы.

  <span> <?php if(isset($_REQUEST[$msg])) echo $msg; ?> </span> <form> </form> 

А также не echo $ msg на странице действия формы.

Попробуй это:

HTML:

 <form action="processlogin.php" method="post"> <input type="text" name="username"> <input type="password" name="password"> <input type="submit" value="Login"> <span> <?php if(isset($_GET['msg'])) echo $_GET['msg']; ?> </span> </form> 

PHP:

 if(!$_POST["username"] || !$_POST["password"]) { $msg = "You left one or more of the required fields."; header("Location:http://localhost/login.php?msg=$msg"); } 

Надеюсь, это поможет вам,

В processlogin.php,

  if(!$_POST["username"] || !$_POST["password"]) { $msg = "You left one or more of the required fields."; $msgEncoded = base64_encode($msg); header("location:login.php?msg=".$msgEncoded); } 

в файле login.php,

  $msg = base64_decode($_GET['msg']); if(isset($_GET['msg'])){ if($msg!=""){ echo $msg; } } 
 <?php if($_SERVER['REQUEST_METHOD'] == "POST") { if(!$_POST["username"] || !$_POST["password"]) { $msg = "You left one or more of the required fields."; echo $msg; //header("Location:http://localhost/login.php"); } } ?> <form action="<?php echo $PHP_SELF;?>" method="post"> <input type="text" name="username"> <input type="password" name="password"> <input type="submit" value="Login"> </form> 

Используйте только одну страницу (ваш login.php ), чтобы отобразить форму, а также проверить ее данные при отправке. Поэтому вам не нужны переменные $ _SESSION, и у вас есть все в одном и том же файле, который принадлежит вместе.

 <?php $msg = null; if(isset($_GET['send'])) { if(!$_POST["username"] || !$_POST["password"]){ $msg = "You left one or more of the required fields."; //header("Location:http://localhost/login.php"); } } ?> <?php echo ($msg !== null)?'<p>ERROR: ' . $msg . '</p>':null; ?> <form action="?send" method="post"> <input type="text" name="username"> <input type="password" name="password"> <input type="submit" value="Login"> </form> 

используйте следующие функции:

 <?php session_start(); define(FLASH_PREFIX,'Flash_') function set_flash($key,$val){ $_SESSION[FLASH_PREFIX.$key]=$val; } function is_flash($key){ return array_key_exits(FLASH_PREFIX.$key,$_SESSION); } function get_flash($key){ return $_SESSION[FLASH_PREFIX.$key]; } function pop_flash($key){ $ret=$_SESSION[FLASH_PREFIX.$key]; unset($_SESSION[FLASH_PREFIX.$key]); return $ret; } ?> с <?php session_start(); define(FLASH_PREFIX,'Flash_') function set_flash($key,$val){ $_SESSION[FLASH_PREFIX.$key]=$val; } function is_flash($key){ return array_key_exits(FLASH_PREFIX.$key,$_SESSION); } function get_flash($key){ return $_SESSION[FLASH_PREFIX.$key]; } function pop_flash($key){ $ret=$_SESSION[FLASH_PREFIX.$key]; unset($_SESSION[FLASH_PREFIX.$key]); return $ret; } ?> 

И когда вы хотите отправить сообщение на другую страницу, используйте

 set_flash('err_msg','one field is empty'); header('location: another.php'); exit(); 

another.php

 <html> . . . <body> <?php if(is_flash('err_msg')){?> <span class="err_msg"><?php echo pop_flash('err_msg'); ?></span> <?php } ?> . . . </body></html>