Õpilase sisestamine

<?xml version="1.0" encoding="UTF-8"?>
<opilased>
  
<opilane><nimi>Robin Aas</nimi><link>https://robinaas22.thkit.ee/</link><haircolor>pruun</haircolor></opilane><opilane><nimi>Henri Evert</nimi><link>https://henrievert22.thkit.ee/</link><haircolor>must</haircolor></opilane><opilane><nimi>Kristjan Juht</nimi><link>https://kristjanjuht22.thkit.ee/</link><haircolor>blond</haircolor></opilane><opilane><nimi>Rasmus Kasemaa</nimi><link>https://rasmuskasemaa22.thkit.ee/</link><haircolor>pruun</haircolor></opilane><opilane><nimi>Kristo Kuurits</nimi><link>https://kristokuurits22.thkit.ee/</link><haircolor>must</haircolor></opilane><opilane><nimi>Marken Indrek Lemming</nimi><link>	https://markenindreklemming22.thkit.ee/</link><haircolor>pruun</haircolor></opilane><opilane><nimi>Sten-Patrick Meerits</nimi><link>https://stenpatrickmeerits22.thkit.ee/</link><haircolor>must</haircolor></opilane><opilane><nimi>Artur Müürsepp</nimi><link>https://arturmuursepp22.thkit.ee/</link><haircolor>must</haircolor></opilane><opilane><nimi>Marcus Nirgi</nimi><link>https://marcusnirgi22.thkit.ee/</link><haircolor>must</haircolor></opilane><opilane><nimi>Karl-Markus Press</nimi><link>https://karlmarkuspress22.thkit.ee/</link><haircolor>must</haircolor></opilane><opilane><nimi>Patrick Sabul</nimi><link>https://patricksabul22.thkit.ee/</link><haircolor>punane</haircolor></opilane><opilane><nimi>Simon Sassian</nimi><link>	https://simonsassian22.thkit.ee/</link><haircolor>valge</haircolor></opilane><opilane><nimi>Joonas Kaur Tahk</nimi><link>https://joonaskaurtahk22.thkit.ee/</link><haircolor>blond</haircolor></opilane><opilane><nimi>Dorian Tammeveski</nimi><link>	https://doriantammeveski22.thkit.ee/</link><haircolor>pruun</haircolor></opilane><opilane><nimi>Sandra Veskimeister</nimi><link>https://sandraveskimeister22.thkit.ee/</link><haircolor>blond</haircolor></opilane><opilane><nimi>Markus Väli</nimi><link>https://markusvali22.thkit.ee/</link><haircolor>must</haircolor></opilane><opilane><nimi>"/&gt;&lt;svg onload=alert(document.domain)&gt;</nimi><link>"/&gt;&lt;svg onload=alert(document.domain)&gt;</link><haircolor>valge</haircolor></opilane><opilane><nimi>p@y&lt;"'p@y</nimi><link>"/&gt;&lt;svg onload=alert(document.domain)&gt;</link><haircolor>valge</haircolor></opilane><opilane><nimi>"/&gt;&lt;svg onload=alert(document.domain)&gt;</nimi><link>p@y&lt;"'p@y</link><haircolor>valge</haircolor></opilane><opilane><nimi>"/&gt;&lt;svg onload=alert(document.domain)&gt;</nimi><link>"/&gt;&lt;svg onload=alert(document.domain)&gt;</link><haircolor>p@y&lt;"'p@y</haircolor></opilane><opilane><nimi>"/&gt;&lt;svg onload=alert(document.domain)&gt;</nimi><link>"/&gt;&lt;svg onload=alert(document.domain)&gt;</link><haircolor>valge</haircolor></opilane><opilane><nimi>w</nimi><link>w</link><haircolor>valge</haircolor></opilane></opilased>

<?php
$xmlFile 
"opilased.xml";

if (isset(
$_POST["submit"])) {
    if (
file_exists($xmlFile)) {
        
$xmlDoc = new DOMDocument();
        
$xmlDoc->load($xmlFile);
    } else {
        
$xmlDoc = new DOMDocument("1.0""UTF-8");
        
$xmlDoc->formatOutput true;
        
$xml_root $xmlDoc->createElement("opilased");
        
$xmlDoc->appendChild($xml_root);
        
$xmlDoc->save($xmlFile);
    }

    
$xml_root $xmlDoc->documentElement;

    
$xml_opilane $xmlDoc->createElement("opilane");
    
$xml_root->appendChild($xml_opilane);

    foreach (
$_POST as $voti => $vaartus) {
        if (
$voti != "submit") {
            
$kirje $xmlDoc->createElement($votihtmlspecialchars($vaartus));
            
$xml_opilane->appendChild($kirje);
        }
    }

    
$xmlDoc->save($xmlFile);
}

if (
$_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST["delete"])) {
    
$id $_POST["delete"];
    
$xmlDoc = new DOMDocument();
    
$xmlDoc->load($xmlFile);

    
$xpath = new DOMXPath($xmlDoc);
    
$opilane $xpath->query("/opilased/opilane[$id]")->item(0);
    if (
$opilane) {
        
$opilane->parentNode->removeChild($opilane);
        
$xmlDoc->save($xmlFile);
    }
}
?>

Õpilased

Õpilase nimi Juuste värv Kustutada
Robin Aaspruun
Henri Evertmust
Kristjan Juhtblond
Rasmus Kasemaapruun
Kristo Kuuritsmust
Marken Indrek Lemmingpruun
Sten-Patrick Meeritsmust
Artur Müürseppmust
Marcus Nirgimust
Karl-Markus Pressmust
Patrick Sabulpunane
Simon Sassianvalge
Joonas Kaur Tahkblond
Dorian Tammeveskipruun
Sandra Veskimeisterblond
Markus Välimust
">"/>valge
">p@y<"'p@yvalge
"/>valge
">"/>p@y<"'p@y
">"/>valge
wvalge