Hallo dedlfix,
vielen Dank für Deine Antwort, die Fragen haben mich zumindest schon mal auf einige Punkte aufmerksam gemacht, über die man mal nachdenken sollte.
Das kommt darauf an, wie genau die Umsetzung erfolgt ist. Womit wird die Datei geparst? Mit eigenem Code oder unter Verwendung einer der mitgelieferten XML-Parser? Wie reagiert das Programm auf Parser-Fehler, die ja bei ungültigen Dateien auftreten werden? Wie reagiert es auf gültige Syntax aber unsinnige Werte, wie beispielsweise außerhalb der Karte liegende Parameter? Wenn die Datei syntaktisch korrekt aber viel zu groß ist, wie reagiert das Script oder PHP oder der Server auf die übermäßige Ressourcenauslastung? Wie ist sichergestellt, dass im Code, den man nicht selbst geschrieben hat (sprich: in PHP selbt), Fehler beseitigt werden, wenn welche bekannt werden?
Ich parse das Ganze mit eigenem Skript, hier mal der vereinfachte Code:
<form action="gpxup.php" method="post" enctype="multipart/form-data">
GPX-Datei : <input size="8" name="uploaddatei" type="file" id="datei">
<input value="Auswerten" type="submit" >
</form>
<?php
if(isset($_FILES['uploaddatei']))
{
if($_FILES['uploaddatei']['error']=='UPLOAD_ERR_OK')
{
$DATEI=$_FILES['uploaddatei']['tmp_name'];
$parser=xml_parser_create();
$track=array();
$tracksegment;
function startElement($parser, $element, $attribute)
{
$element = strtolower($element);
global $track;
global $tracksegment;
if ($element=="trkseg")
{
$tracksegment=array();
array_push($track,$tracksegment);
}
if ($element=="trkpt")
{
$attributes=array();
foreach($attribute as $key => $wert)
{
$key = strtolower($key);
$attributes[$key]=$wert;
}
$trackpoint=array();
$trackpoint[0]=$attributes['lon'];
$trackpoint[1]=$attributes['lat'];
array_push($tracksegment,$trackpoint);
}
}
function endElement($xmlparser, $element)
{
}
xml_set_element_handler($parser, "startElement", "endElement");
$gpxdatei=fopen($DATEI,'r');
while ($data = fread($gpxdatei, 4096))
{
xml_parse($parser, $data, feof($gpxdatei));
}
xml_parser_free($parser);
}
}
?>
Sollte vielleicht auf jeden Fall mal die Größe der hochladbaren Datei begrenzen, da muß ich mal schaun, wie man das macht.
Probleme sollte es da eigentlich nicht geben, so ne GPX-Datei is ja nicht so ewig groß, wenn der Track nicht gerade 10 mal um die Welt läuft oder so.
Erlaubte max. Anzahl der enthaltenen Trackpunkte läßt sich auch begrenzen. Wird sich nach meiner ersten Abschätzung aber eher an Leistungsfähigkeit der Browser orientieren als an der Leistungsfähigkeit von Server/Parser.
Was mir nicht so klar is:
Ist es sinnvoll oder nötig, bei der ganzen Sache mit stripslashes() zu arbeiten und wo und wie muß ich das dann einsetzen? Ist ja ne String-Funktion und keine Dateifunktion, denke ich.
Und bei mir wird doch mit einer Datei und nicht mit String gearbeitet, oder???
Viele Grüße
peter