我正在尝试使用xml php开发一个小型Web应用程序,但是会出现一些问题。我使用一些教程来了解我在做什么,但对遇到的问题一无所知。我想为具有某些特征(名称,电子邮件,密码,角色)的新用户创建一个新的xml文件。您会在代码中看到我使用addChild在xml中添加这些项目,但是它会生成一个不带名称和密码的xml,而另一个则做的很奇怪。
有我的代码:
if(count($errors) == 0) {
$xml = new SimpleXMLElement('<user></user>');
$xml->addChild('password', md5($password));
$xml->addChild('email', $email);
$xml->addChild('role', $role);
$xml->asXML('users/'. $username .'.xml');
header('Location: login.php');
die;
}
这是不带名称的新xml生成:
<?xml version="1.0"?>
<user><password>d41d8cd98f00b204e9800998ecf8427e</password><email/><role/></user>
奇怪的是标签<email/>
和<role/>
。
那有人可以帮我吗?我只花了3个小时试图找到解决方案XD
答案 0 :(得分:0)
显然-但是我们看不到这部分代码-$ email和$ role为空。这样便生成了空标签<email/>
和<role/>
。
答案 1 :(得分:0)
正如我所说, $ email 和 $ role 是空的,因此您可以通过以下方式更新代码:
if(count($errors) == 0) {
$email = isset($email)? $email : " ";
$role = isset($role)? $role : " ";
$xml = new SimpleXMLElement('<user></user>');
$xml->addChild('password', md5($password));
$xml->addChild('email', $email);
$xml->addChild('role', $role);
$xml->asXML('users/'. $username .'.xml');
header('Location: login.php');
die;
}
答案 2 :(得分:0)
我尝试了一下,但没有任何变化,但让我将整个代码发送给您:
<?php
$errors = array();
if (isset($_POST['login'])) {
$username = preg_replace('/[^A-Za-z]/', '', $_POST['username']);
$email = $_POST['email'];
$password = $_POST['password'];
$role = $_POST['role'];
if (file_exists('users/' . $username . '.xml')) {
$errors[] = 'Username already exists';
}
if ($email = '') {
$errors[] = 'Email is blank';
}
if ($username = '') {
$errors[] = 'Username is blank';
}
if ($role = '') {
$errors[] = 'Role is blank';
}
if($password = ''){
$errors[] = 'Password is blanck';
}
if(count($errors) == 0) {
$xml = new SimpleXMLElement('<user></user>');
$xml->addChild('password', md5($password));
$xml->addChild('email', $email);
$xml->addChild('role', $role);
$xml->asXML('users/'. $username .'.xml');
header('Location: login.php');
die;
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Resgister</title>
</head>
<body>
<h1>Register</h1>
<form method="post" action="">
<?php
if(count($errors) > 0){
echo '<ul>';
foreach($errors as $e){
echo '<li>' . $e . '</li>';
}
echo '</ul>';
}
?>
<p>Username <input type="text" name="username" size="20"></p>
<p>Email <input type="email" name="email" size="20"></p>
<p>Password <input type="password" name="password" size="20"></p>
<p>Role <input type="text" name="role"></p>
<p><input type="submit" name="login" value="Login"></p>
</form>
</body>
</html>
所以在那之后我不知道。