php - Проблема с редактированием xml


0

Проблема такая, работаю в пхп скрипте с xml файлом, все подгружается без вопросов, информацию из файла считывает корректно, но не сохраняет изменения в файле, при том ошибок никаких не вижу, программа отрабатывает корректно, а в xml ничего не меняется. Возможно что-то с правами на запись,но is_writible($filename) === true

часть кода

if (file_exists(database.xml)) {

    $xml = simplexml_load_file(database.xml);

} else {
    exit(Не удалось открыть файл database.xml);
}


$users = $xml->xpath("//users/user/login[. = {$login}]");
if(count($users) > 0) { // if found
    echo json_encode("not unique login");
    exit();
}
$users = $xml->xpath("//users/user/email[. = {$email}]");
if(count($users) > 0) { // if found
    echo json_encode("not unique email");
    exit();
}
//генерируем динамическую соль из даты и шифр пароль
$datenow = date(YmdHis);//извлекаем    дату
$soul = md5($datenow);// шифруем    дату
$md5password= md5($password.$soul);


$addUsers= $xml->users->addChild("user");


$addUser->addChild(name, $name);
$addUser->addChild(login, $login);
$addUser->addChild(password, $md5password);
$addUser->addChild(email, $email);

мой xml

<?xml version=1.0 standalone=yes?>
<users>

    <quantity>1</quantity>
    <user>
        <id>0</id>
        <name>test</name>
        <login>user123</login>
        <password>user123</password>
        <email>[email protected]</email>
    </user>
</users>
Источник
  •  57
  •  1
  • 29 янв 2018 2018-01-29 11:41:12
@teran Может подскажите как это должно выглядеть? добавил строчку $xml->asXML(database.xml); , работать лучше не стало) — 29 янв 20182018-01-29 12:05:53.000000
где запись в файл то обратно? не ожидаете ведь вы, что оно само по себе запишется? — 29 янв 20182018-01-29 11:46:27.000000
$soul это у вас соль типа? :) — 29 янв 20182018-01-29 11:45:30.000000

1 ответ

0

Включите отображение варнингов пхп, это поможет избежать многих ошибок.

Во-первых, при добавлении не надо указывать корневой узел. Вместо

$addUsers= $xml->users->addChild("user");

надо просто написать

$addUsers = $xml->addChild("user");

а во-вторых, исправьте в данной же строке имя переменной на $addUser без s на конце, как в вашем дальнейшем коде.

В третьих, как уже написали в комментариях, изменения надо сохранить.

$xml->saveXML(filename.xml); //->asXML - то же самое

Также добавлю, что quantity лучше сделать атрибутом users, а не узлом.

  • 29 янв 2018 2018-01-29 12:56:07