我有以下登录表单(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文件中的登录表单上方显示它。我应该如何更改我的代码 我的功能。
答案 0 :(得分:9)
我更喜欢Jquery验证或基于Ajax的身份验证。但你仍然可以这样做:
将错误信息放入会话中,如下所示:
$_SESSION['Error'] = "You left one or more of the required fields.";
比简单显示它是这样的:
if( isset($_SESSION['Error']) )
{
echo $_SESSION['Error'];
unset($_SESSION['Error']);
}
在这种情况下,您可以在不同的操作中分配多个消息。
答案 1 :(得分:3)
header("Location:http://localhost/login.php?x=1")
在login.php中
if(isset($_GET('x'))){
//your html for error message
}
答案 2 :(得分:1)
您可以在表格上方或表格上方显示消息。
<span>
<?php if(isset($_REQUEST[$msg]))
echo $msg;
?>
</span>
<form>
</form>
并且也不要在表单的操作页面中回显$ msg。
答案 3 :(得分:1)
仅使用一个页面(您的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>
答案 4 :(得分:1)
试试这个:
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");
}
答案 5 :(得分:1)
希望它可以帮到你,
在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;
}
}
答案 6 :(得分:1)
<?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>
答案 7 :(得分:0)
使用这些功能:
<?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>