php自定义错误消息显示不正确

时间:2013-10-05 14:04:04

标签: php session

我正在使用.txt文件而不是数据库进行登录功能的php分配,但我在这里遇到了某种问题。据说是在一个不存在的详细信息键后显示“无效的电子邮件或密码”,但是当页面加载时,msg默认显示,下面是我的代码

<?php
$lines= file("customers.txt");
$matchFound=false;

$errmsg = 'Invalid email or password';

for($i=0;$i<count($lines);$i++)
{
    if ($i!=0)
    {
        $line=trim($lines[$i]); 
        $cells=explode("\t",$line);
        $_SESSION['email'] = isset($_POST['email'])? $_POST['email'] : null;
        $_SESSION['password'] = isset($_POST['password']) ? $_POST['password'] : null;

        if ($_SESSION['email']==$cells[2] && $_SESSION['password']==$cells[3])
        {
            $matchFound=true;
            break;
        }
    }
}

if ($matchFound == true)
{
    header('Location: login2.php');
}
else 
{
    echo $errmsg;
}
?>

2 个答案:

答案 0 :(得分:1)

这是因为您没有检查用户是否正确提交了表单输入。默认情况下,$matchFound的值为FALSE,并且在运行脚本时将始终显示错误消息。

为表单提交按钮指定name属性,然后添加if块以确保表单已正确提交:

if (isset( $_POST['submitButton'] )) {
    # code...
}

这样,如果未收到用户输入,则if块内的代码将无法运行,并且您可以避免每次加载页面时都显示错误。

此外,您错过了脚本顶部的session_start()语句。如果您希望会话正常工作,则需要这样做。

答案 1 :(得分:0)

尝试:

if ($matchFound == true)
{
    header('Location: login2.php');
}
else if(isset($_POST['email']))
{
    echo $errmsg;
}

您还需要session_start才能使用$ _SESSION数组