为了账号安全,请及时绑定邮箱和手机立即绑定

php重定向到另一个页面显示错误的结果

php重定向到另一个页面显示错误的结果

PHP
侃侃尔雅 2023-10-15 10:44:35
我一直在尝试使用 php.ini 使用存储在 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();}}?>
查看完整描述

1 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

在 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,这样您就可以搜索匹配项,而不必遍历整个 ist 并进行字符串匹配。



查看完整回答
反对 回复 2023-10-15
  • 1 回答
  • 0 关注
  • 89 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信