0

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

<?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;
}
?>
4

2 回答 2

1

这是因为您没有检查用户是否正确提交了表单输入。的值为$matchFound默认FALSE值,运行脚本时总是会显示错误消息。

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

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

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

此外,您缺少session_start()脚本顶部的语句。如果您希望会话正常工作,这是必需的。

于 2013-10-05T14:09:51.353 回答
0

尝试:

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

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

于 2013-10-05T14:09:22.163 回答