带有xml的php中的addChild函数问题

时间:2019-04-03 14:38:10

标签: php xml

我正在尝试使用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

3 个答案:

答案 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>

所以在那之后我不知道。