【问题标题】:php redirecting to another page showing wrong resultsphp重定向到另一个页面显示错误的结果
【发布时间】:2020-08-15 19:28:18
【问题描述】:

我一直在尝试使用 php 使用存储在 xml 文件中的数据来验证登录信息。如果电子邮件 ID 和密码不匹配,它应该回显一条错误消息,说“对不起,它们不匹配”。如果它们匹配,则用户应该被重定向到 index.html。即使我尝试使用正确的电子邮件和密码登录,我的代码仍然显示错误消息。 我的html表单:

<form method="post" action="login.php">
<input id='email1' type="email" name="email" placeholder="Email Adress" required="required" class="input-txt" onchange="checkuser();"  /> &nbsp;
<input id='pass1' type="password" name="password" placeholder="Password" required="required" class="input-txt" />
<button type="submit" class="btn" name="ok" id="b1" >Sign in </button> <br> <br>

我的 xml 文件(storedata.xml):

<document>
<data><fname>Group</fname><lname>Project</lname><email2>webuy55@gmail.com</email2><pass2>teamproject55</pass2></data>
<data><fname>Sam</fname><lname>Kim</lname><email2>samkim@gmail.com</email2><pass2>abcd1234</pass2></data>
<data><fname>Harold</fname><lname>Pain</lname><email2>hpain@gmail.com</email2><pass2>abcd</pass2></data>
<data><fname>Ryan</fname><lname>Reynold</lname><email2>ryan@gmail.com</email2><pass2>123456</pass2></data>
<data><fname>Reece</fname><lname>Simpson</lname><email2>reece@gmail.com</email2><pass2>onlinestore</pass2></data>
<data><fname>Stefani</fname><lname>Germanotta</lname><email2>stef@gmail.com</email2><pass2>bbbcccddd</pass2></data>
</document>

我的 php 代码(login.php):

<?php 
$emailid= $_POST["email"];
$pass= $_POST["password"];
if(isset($_REQUEST['ok'])) {
$xml2 = simplexml_load_file('storedata.xml');
foreach($xml2->data as $user) { // for every user node
    if($user->email2 == $emailid && $user->pass2 == $pass) {
       header("Location: index.html", true, 301);
       exit();
    }
    else {
        echo 'Sorry, email and passwords dont match.<br>
        <p>Please go back to the login page and enter correct information.</p>';
        break;
    }
}
if (($_POST["email"]== "webuy55@gmail.com") && ($_POST["password"]== "teamproject55"))
{
header("Location: backstore_inventory_ben.html", true, 301);
exit();
}
}
?>

【问题讨论】:

    标签: php xml


    【解决方案1】:

    在您的 foreach 循环中,您只检查 XML 数据中的第一个条目,如果不匹配则退出。你需要做这样的事情:

    <?php
    $emailid = $_POST["email"];
    $pass    = $_POST["password"];
    if (isset($_REQUEST['ok']))
    {
        $xml2 = simplexml_load_file('storedata.xml');
        $validLogin = false;
        foreach ($xml2->data as $user)
        {
            // for every user node
            if ($user->email2 == $emailid && $user->pass2 == $pass)
            {
                $validLogin = true;
                break;
            }
        }
    
        if ($validLogin)
        {
            header("Location: index.html", true, 301);
            exit();
        }
        else
        {
            echo 'Sorry, email and passwords dont match.<br><p>Please go back to the login page and enter correct information.</p>';
        }
        
        if (($_POST["email"] == "webuy55@gmail.com") && ($_POST["password"] == "teamproject55"))
        {
            header("Location: backstore_inventory_ben.html", true, 301);
            exit();
        }
    }
    

    另外,如果您的 XML 文件中有多个条目,您可能需要查看 DOM,特别是 DOMXpath,这样您就可以搜索匹配项而无需遍历整个列表并进行字符串匹配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-26
      • 2019-01-06
      • 2017-04-03
      • 1970-01-01
      • 2011-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多