如何在登录HTML页面上使用XML匹配凭据?

时间:2013-10-28 10:31:32

标签: javascript html xml validation xml-parsing

本地我正在尝试使用XML页面来匹配登录凭证,这将像数据库一样。如果登录凭证匹配,则必须进入下一页,该页面将是包含某些内容的新HTML页面。以下是我在HTML& XML页面。我使用JavaScript进行了验证,并为一个用户进行了硬编码。在XML中,如果我说10个用户,那我该怎么办?

<html>
<head><title>Login page</title></head>
<body>

<div align="right">
<h1 style="font-family:Times New Roman;text-align="center";font-size:20pt;
color:#00FF00;>
Welcome to Login Page
</h1>
<form name="login">
Username: &nbsp <input type="text" name="userid"/><br><br>
Password:  &nbsp  <input type="password" name="paasword"/><br><br>
<input type="button" onclick="check(this.form)" value="Login"/>
<input type="reset" value="Cancel"/>
</form>
<script language="javascript">
function check(form)/*function to check userid & password*/
{
/*the following code checkes whether the entered userid and password are matching*/
if(form.userid.value == "user1" && form.password.value == "pass1")
{
window.open('success.html')/*opens the target page while Id & password matches*/
}
else
{
alert("wrong Username or Password")/*displays error message*/
}
}
</script>
</div>
</body>
</html>

XML代码:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<student>

<details>
<username>user1</username>
<password>pass1</password>
<email>user1@abc.com</email>
</details>

<details>
<username>user2</username>
<password>pass2</password>
<email>user2@abc.com</email>
</details>

<details>
<username>user3</username>
<password>pass3</password>
<email>user3@abc.com</email>
</details>

<details>
<username>user4</username>
<password>pass4</password>
<email>user4@abc.com</email>
</details>

</student>

2 个答案:

答案 0 :(得分:1)

您可以为每个用户创建一个XML文件,这样可以获得更好的效果。

然后登录时,检查文件是否存在并从中读取密码:

<?php
if(isset($_POST['login'])){
$username = preg_replace('/[^A-Za-z]/', '', $_POST['username']);
$password = $_POST['password'];
if(file_exists('users/' . $username . '.xml')){
    $xml = new SimpleXMLElement('users/' . $username . '.xml', 0, true);
    if($password == $xml->password){
        session_start();
        $_SESSION['username'] = $username;
        header('Location: index.php');
        die;
    } else {
                echo "wrong password";
            }
} else {
    echo "User not found";
}
?>

我建议也使用一些密码加密,如下所示:

$password = base_64_encode(md5($_POST['password']));

当然,您需要在XML文件中使用相同的编码保存密码。

答案 1 :(得分:1)

您可以使用jQuery并执行类似的操作..

<html>
<head><title>Login page</title></head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
</script>
<script>
   $(document).ready(function(){
   var xml;
  $('#b1').click(function(){
       $.get('users.xml', null, function (data, textStatus) {
           xml=data;
            $(xml).find('details').each( function(){
                var item = $(this);

                if(item.find('username').text()==$('#userid').val() && item.find('password').text()==$('#pwd').val())
                {
                    window.open('success.html');
                }
           });
        });
    });
});
    </script>
<body>
<div align="right">
<h1> Welcome to Login Page </h1>
Username: &nbsp <input type="text" id="userid" name="userid"/><br><br>
Password:  &nbsp  <input type="password" id="pwd" name="paasword"/><br><br>
<input type="button" id="b1" value="Login"/>
<input type="reset" value="Cancel"/>
</div>
</body>
</html>