如何在PHP的HTML页面中显示错误消息?
我有下面的登录表单(login.php),其中我要求输入用户名和密码如何在PHP的HTML页面中显示错误消息?,php,html,Php,Html,我有下面的登录表单(login.php),其中我要求输入用户名和密码 <form action="processlogin.php" method="post"> <input type="text" name="username"> <input type="password" name="password"> <input type="submit" value="Login">
<form action="processlogin.php" method="post">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit" value="Login">
</form>
此代码检查是否所有必填字段都已填充。如果不是,则显示错误消息
到现在为止一切都很好
我的问题是,错误消息显示在纯白色页面中。我想在login.php文件中的登录表单上方显示它。我应该如何更改代码以获得
我的功能。您可以在表格或表单上方的span中显示消息
<span>
<?php if(isset($_REQUEST[$msg]))
echo $msg;
?>
</span>
<form>
</form>
也不要在表单的操作页面中回显$msg。仅使用一个页面(您的login.php
)来显示表单,并在发送时验证其数据。因此,您不需要任何$\u会话变量,而且所有变量都位于同一个文件中,属于同一个文件
<?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>
在login.php中
if(isset($_GET('x'))){
//your html for error message
}
试试这个:
html:
希望它能帮助你
在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;
}
}
我更喜欢Jquery验证或基于Ajax的身份验证。但你仍然可以这样做: 在会话中按如下方式放置错误消息:
$_SESSION['Error'] = "You left one or more of the required fields.";
而不是像这样简单地展示:
if( isset($_SESSION['Error']) )
{
echo $_SESSION['Error'];
unset($_SESSION['Error']);
}
在这种情况下,您可以在不同的操作中分配多条消息。
<?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>
使用以下功能:
<?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
<html>
.
.
.
<body>
<?php if(is_flash('err_msg')){?>
<span class="err_msg"><?php echo pop_flash('err_msg'); ?></span>
<?php } ?>
.
.
.
</body></html>
.
.
.
.
.
.
使用javascript或jquery,而不是使用php进行验证我同意使用类似jquery AJAX的东西,并获得可以传递错误消息的JSON返回。一开始需要一点时间来适应,但这可以帮你省去很多麻烦。如果不想使用javascript,另一个选项是在会话变量中传递错误消息并执行isset($\u session['my\u var'])$_会话['my_var']:“”;在这个问题上,您的答案是正确的,但使用get会使url变脏。您可以使用会话
$\u请检查我的答案。如果$\u GET['msg']包含任何特殊字符怎么办?请检查Chinnu R的答案。您的答案是正确的,但使用get会使url变脏。您可以使用$\u会话请检查我的答案。对不起,您是对的。(-:让我们删除注释。+1请检查我的答案。+1简单但聪明。请检查会话解决方案的我的答案。供将来参考:注意“$\u GET必须有括号而不是括号”;此编辑旨在针对文章的作者,作为编辑毫无意义。它应该作为评论或回答来编写。这很好,但您正在使其变得复杂。代码必须更简单且易于管理。感谢您的关注,但我认为随着规模的扩大,需要一些复杂的东西。(:我不明白表单字段的条件测试在代码中的什么位置?我不明白第二个代码段将放在哪里
if( isset($_SESSION['Error']) )
{
echo $_SESSION['Error'];
unset($_SESSION['Error']);
}
<?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>
<?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();
<html>
.
.
.
<body>
<?php if(is_flash('err_msg')){?>
<span class="err_msg"><?php echo pop_flash('err_msg'); ?></span>
<?php } ?>
.
.
.
</body></html>