我希望系统在新注册时检查xml文件中是否存在电子邮件,我该怎么办?我得到了比较所有电子邮件节点的基本想法,但仍然无法在几个小时后使其工作。谢谢你的帮助
register.html
<!DOCTYPE html>
<html lang="en">
<head>
<title>test</title>
</head>
<body>
<h1>ShipOnline System Registration Page</h1>
<form id="regform" method="post" action="register.php">
<fieldset id="person">
<legend>Your details:</legend>
<p><label for="fname">First Name:</label><input type="text" name="fname"/></p>
<p><label for="lname">Last Name:</label><input type="text" name="lname"/></p>
<p><label for="password">Password:</label><input type="password" name="password"/></p>
<p><label for="cpassword">Confirm Password:</label><input type="password" name="cpassword"/></p>
<p><label for="email">Email:</label><input type="email" id="email" name="email"/></p>
<p><label for="phone">Phone:</label><input type="text" name="phone"/></p>
<input type="submit" value="Register"/>
</fieldset>
</form>
</body>
</html>
register.php的相关部分
<?php
$email = @trim($_POST["email"]);
if ($password != $cpassword)
{
echo 'Password does not match';
}
@override
else if ($email /*exists*/)
{
echo 'Email exists';
}
?>
customer.xml
<?xml version="1.0"?>
<customer>
<user>
<id>0</id>
<fname>John</fname>
<lname>Smith</lname>
<email>jsmith@gmail.com</email>
<password>jsmith</password>
<phone>0412345677</phone>
</user>
<user>
<id>1</id>
<fname>Arthur</fname>
<lname>Luo</lname>
<email>aluo@gmail.com</email>
<password>aluo</password>
<phone>0412345678</phone>
</user>
答案 0 :(得分:1)
最简单的方法是简单搜索XML文件的内容。如果您确信在其他某些上下文中没有包含电子邮件地址的其他<email>
标记,则可以。例如:
# slurp the XML file into a variable
$xml = file_get_contents('customer.xml');
# search for the email address within the tags
if (strpos($xml, "<email>$email</email>") !== false)) {
# you've found it!
}
您还可以使用DOMDocument和DOMXPath来解析XML并搜索电子邮件地址。老实说,考虑到你发布的XML文件的简单性,这似乎有些过分了。