Rejestracja użytkownika w oparciu o PHP i XML

0

Witam,
Moim zamysłem jest zrobienie systemu logowania w oparciu o PHP+XML w raz z rejestracją. (sam system potem użyje również w panelu administracyjnym do dodawania innych elementów związanych z zarządzaniem moją stroną)
Samą weryfikację użytkownika względem pliku xml (przeszukiwanie wpisów i porównywanie ich z przekazanymi z formularza danymi już mam). Aczkolwiek, problem pojawił się przy rejestracji (chodzi o modyfikacje pliku xml). Otóż mam coś takiego:

<?xml version="1.0"?>
<users>
	<user>
		<id>0</id>
		<name>User</name>
		<pass>1a1dc91c907325c69271ddf0c944bc72</pass>
		<level>1</level>
	</user>
</users>

Chciałbym, aby dane z formularza rejestracyjnego były dodawane jako kolejny USER czyli tak:

<?xml version="1.0"?>
<users>
	<user>
		<id>0</id>
		<name>User</name>
		<pass>1a1dc91c907325c69271ddf0c944bc72</pass>
		<level>1</level>
	</user>
	<user>
		<id>1</id>
		<name>User2</name>
		<pass>1a1dc91c907325c69271ddf0c944bc72</pass>
		<level>1</level>
	</user>
</users>

Niestety za pomocą kodu:

<?
$login = $_POST['login'];
$haslo = $_POST['haslo'];
$haslo2 = $_POST['haslo2'];
		
$xml = simplexml_load_file('users.xml');

foreach ($xml->user as $user) // Pętla przeszukująca wszystkie wpisy
{
	echo $user->name." = ".$login.="?";
	if($user->name == $login) {$login_wolny++;}
	$ile++;
}

	if ($login_wolny == 0)
	{
		if($haslo==$haslo2)
		{			 
		  $xml -> name[$ile+1] = $login;  
		  $xml -> pass[$ile+1] = $haslo;
		  $str = $xml -> asXML();
		  $q = fopen('users.xml', 'w+');
		  fwrite($q, $str);
		  fclose($q);
		}
		else
		{
			echo ("Podałeś różne hasła!");
		}
	}
	else
	{
		echo ("Ten login jest już zajęty!");
	}
?>'

Uzyskuje jedynie :

 
<?xml version="1.0"?>
<users>
	<user>
		<id>1</id>
		<name>User</name>
		<pass>1a1dc91c907325c69271ddf0c944bc72</pass>
		<level>1</level>
	</user>
<name>login</name><pass>pass</pass></users>

Ktoś ma propozycje jak to wykonać?
Założenia:
- inkrementacja id
- level defaultowo 1 (zmiana ewentualnie potem w panelu przez administratora)

0

http://php.net/manual/en/book.simplexml.php

EDIT:
Sory, nie zauważyłem, że korzystasz z simplexml. Tam masz funkcję addChild.

0

Problem rozwiązany, jak by ktoś potrzebował podobnego rozwiązania, poniżej przedstawiam kod:

<?
$login = $_POST['login'];
$haslo = $_POST['haslo'];
$haslo2 = $_POST['haslo2'];
	
$xml = simplexml_load_file('users.xml');

foreach ($xml->user as $user) // Pętla przeszukująca liste obecnie zarejestrowanych użytkowników
{
	if($user->name == $login) {$login_wolny++;}
	$ile++;
}

	if ($login_wolny == 0) // Jeżeli login wolny
	{
		if($haslo==$haslo2) // Jeżeli hasła się zgadzają 
		{			 
			$user = $xml->addChild('user'); // Dodaj znacznik user, a w nim:
			$user->addChild('id', $ile+1); // Dodaj znacznik id wypełnij go wartrością $ile+1
			$user->addChild('name', $login); // Dodaj znacznik name wypełnij go wartością $login
			$user->addChild('pass', md5($haslo)); // Dodaj znacznik pass wypełnij go wartością $hasło zakodowaną metodą md5
			$user->addChild('level', 1); //	Dodaj znacznik level, wypełnij go wartością '1'

			$str = $xml -> asXML(); // Przypisz do $str zmienioną zawratośc pliku xml
			$q = fopen('users.xml', 'w+'); // Otwórz plik users.xml
			fwrite($q, $str); // Nadpisz plik users.xml zmienioną wartością pliku xml przypisaną do zmiennej $str
			fclose($q); // Zamknij plik
		}
		else
		{
			echo ("Podałeś różne hasła!");
		}
	}
	else
	{
		echo ("Ten login jest już zajęty!");
	}
?>

1 użytkowników online, w tym zalogowanych: 0, gości: 1