nintendoluk
Commander
- Registriert
- Mai 2014
- Beiträge
- 2.129
Hallo CB-Experten,
ich habe einem meiner Spiele eine Highscore-Funktion beigefügt. Dabei bekommt eine PHP-Seite Spielername und Punktzahl übermittelt, überprüft diese dann, ob es ein neuer Highscore ist und ändert dann eine XML-Datei in der die Daten gespeichert sind.
Der Quelltext sieht so aus:
Das Problem ist Folgendes:
Enthält nun der eingegebene Spielername Umlaute, bekommt die PHP seite zB. .../?name=Äöü&score=100 und statt dass ein Highscore unter diesem Namen gespeichert wird, ist anschließend das komplette XML-Dokument vollkommen leer!
In erster Linie würde ich nun gerne wissen warum das so ist? Eine mögliche Lösung wäre, die Umlaute zu Codieren (zB. ä ), wobei das auch nicht Ideal wäre weil nicht alle möglichkeiten abgedeckt werden können. Sonst kommt auf einmal irgendsoein Hanswurst, der ein paar Kryptische Zeichen gefunden hat und schon ist der komplette Highscore gelöscht!
Ich suche also nach einer anderen Lösung, ich will den Spielern aber trotzdem auch die möglichkeit geben Umlaute eingeben zu können.
Wenn sich also einer mit DOMDocument auskennt soll er mir bitte helfen :-)
Gruß
Lukas
ich habe einem meiner Spiele eine Highscore-Funktion beigefügt. Dabei bekommt eine PHP-Seite Spielername und Punktzahl übermittelt, überprüft diese dann, ob es ein neuer Highscore ist und ändert dann eine XML-Datei in der die Daten gespeichert sind.
Der Quelltext sieht so aus:
PHP:
<?php
if(isset($_GET['score']) && isset($_GET['name']))
{
$news = $_GET['score'];
$newn = $_GET['name'];
}
$doc = new DOMDocument();
$doc->load( 'highscores.xml' );
$highscores = $doc->getElementsByTagName( "highscore" );
foreach( $highscores as $highscore )
{
$names = $highscore->getElementsByTagName( "name" );
$name = $names->item(0)->nodeValue;
$scores = $highscore->getElementsByTagName( "score" );
$score = $scores->item(0)->nodeValue;
echo "<b>$name - $score \n</b><br>";
if($news > $score)
{
$scores->item(0)->nodeValue = $news;
$names->item(0)->nodeValue = $newn;
echo "new hs<br>";
$news = $score;
$newn = $name;
$doc->save('highscores.xml');
}
}
?>
Das Problem ist Folgendes:
Enthält nun der eingegebene Spielername Umlaute, bekommt die PHP seite zB. .../?name=Äöü&score=100 und statt dass ein Highscore unter diesem Namen gespeichert wird, ist anschließend das komplette XML-Dokument vollkommen leer!
In erster Linie würde ich nun gerne wissen warum das so ist? Eine mögliche Lösung wäre, die Umlaute zu Codieren (zB. ä ), wobei das auch nicht Ideal wäre weil nicht alle möglichkeiten abgedeckt werden können. Sonst kommt auf einmal irgendsoein Hanswurst, der ein paar Kryptische Zeichen gefunden hat und schon ist der komplette Highscore gelöscht!
Ich suche also nach einer anderen Lösung, ich will den Spielern aber trotzdem auch die möglichkeit geben Umlaute eingeben zu können.
Wenn sich also einer mit DOMDocument auskennt soll er mir bitte helfen :-)
Gruß
Lukas