Antworten auf deine Fragen:
Neues Thema erstellen

XML Upload

Spatzihasi

Angel Of Death

Hallo zusammen,

ich versuch mich grad in einem XML Upload und einem kleinen Warenkorb.

Zunächst aber erst einmal gehts hier um den Upload

ich habe ein Formular erstellt wo man ein Passwort eingeben kann, wenn dieses Passwort stimmt soll man zu einem Formular kommen wo man eine Datei uploaden kann, aber nur eine bestimmte, nämlich eine xml Datei namens artikeldaten.xml.

Das funktioniert auch alles gut und auch wenn ich einen anderen Dateityp hochlade bekomme ich eine Fehlermeldung das es der falsche Dateityp ist.

Hier ist aber der Haken. Die Datei mit dem falschen Dateityp wird trotzdem auf meinen Testserver hochgeladen.
Ziel des Ganzen ist es, das ich die artikeldaten.xml verändere, das heisst den Inhalt und dieser neue Inhalt übernommen wird. Diese Veränderung in der artikeldaten.xml soll sich dann auf meine Warenkorbartikel auswirken, da Artikel in der artikeldaten.xml hinterlegt sind.

Mir wurde dann gesagt das ich move_uploaded_file auch in die if Anweisung mit einfügen muss, weiss aber nicht recht wie ich das machen muss, bzw alles was ich getestet hab, hat zu Fehlern geführt.

Das verwendete Passwort ist: geheim

Hier mal meine Scripte:

upload.php

PHP:
<?php
//Holt sich das Passwort aus dem POST
$passwort = $_POST['passwort'];
//isset Bedeutet das in der Variable "passwort" was drin ist
if (isset($passwort)){
//Wenn die Eingabe Passwort = geheim ist
if ($passwort == "geheim"){
// wird die Variable angeldet auf True also wahr gesetzt
$anmelden = true;
}
// wenn passwort ist falsch
else{
if($anemelden == false){
print "Die Anmeldung war nicht erfolgeich";
print "<a href='upload.php'></br></br>Zurück zur Passworteingabe</a>";
// bei falscheingabe des passwortes wird nur der link zurück zur passworteingabe
// und der text "die anmeldung war nicht erfolgreich" ausgegeben, nicht aber
// erneut das login-formular 
exit();
}
}
}
?>
<html>
<body>
<?php
if ( $anmelden == "" || $anmelden != true ) {
?>
<h1>Bitte geben Sie ein Passwort ein</h1>
<!-- PHP_SELF gibt an, das die eigene Seite aufgerufen wird -->
<form action="<?php print $_SERVER['upload/PHP_SELF'];?>" method="POST" >
<input type="password" name="passwort">
<input type="submit" value="Log-in">
</form>

<?php }
// Überprüfung: ob die Variable angemedelt wahr ist, also den Wert beinhaltet den wir am Seitenanfang angegeben haben
if ( $anmelden == true ) {
?>
<h1>Dateiupload</h1>
<form method="post" action="xml_upload.php" enctype="multipart/form-data"><p>
<input type="file" name="datei" accept="text/xml"/></p>
<input type="submit" value="senden"/></p>
</form>
<?php
print "<a href='upload.php'></br></br>Zurück zur Passworteingabe</a>";
print "<a href='artikel.php'></br></br>Hier geht´s zu den Artikeln</a>";
?>
<?php }
?>
</body>
</html>
xml_upload.php

PHP:
<?php // Dateiupload //
$datei = $_POST["datei"];
print "Datei: ".
$_FILES["datei"] ["name"]."<br>";
print "Dateigroesse: ".
$_FILES ["datei"] ["size"]." Bytes<br>";
print "Dateityp: ".
$_FILES ["datei"] ["type"]."<br>";
$erfolg = move_uploaded_file (
$_FILES ["datei"] ["tmp_name"],
$_FILES ["datei"] ["name"]);
if($_FILES["datei"]["type"] == "text/xml" && $_FILES["datei"]["name"] == "artikeldaten.xml")
{
print "Datei wurde erfolgreich hochgeladen";
print "<a href='artikel.php'></br></br>Hier geht´s zu den Artikeln</a>";
}
else{
print "<br>Sie haben einen falschen Dateityp hochgeladen <p>";
print "Bitte versuchen Sie es erneut";
print "<a href='upload.php'></br></br>Zurück zum Uploadformular</a>";
}
?>
Vielleicht kann mir ja jemand sagen wie ich das machen muss.

PS: ausserdem wurde mir gesagt wenn ein bestimmter Dateityp nich erwünscht ist, darf ich kein move_uploaded_file schreiben. Da wird dann zwar der Upload durchgeführt. Ich seh es aber nicht. Da sich die Datei auf dem Testserver nicht aktualisiert.

Liebe Grüsse
Spatzihasi
 
Zuletzt bearbeitet:

Sorc

Nicht mehr ganz neu hier

AW: XML Upload

Mach doch einfach erst die Abfrage ob es sich um eine XML Datei handelt und wenn es eine ist dann move_uploaded_file.
 

Spatzihasi

Angel Of Death

AW: XML Upload

du meinst so????

PHP:
if($_FILES["datei"]["type"] == "text/xml")
{

move_uploaded_file .....
sowas hab ich vorhin schon probiert aber irgendwie nich hingekriegt :( ich sitz an dem mist schon seit heut mittag, ich glaub php wird nie mein freund werden so sehr ich mir mühe gebe
 

Sorc

Nicht mehr ganz neu hier

AW: XML Upload

PHP:
if($_FILES["datei"]["type"] == "text/xml")
{
move_uploaded_file($_FILES['datei'][tmp_name], 'bildordner/'.$_FILES['datei'][name]);
} else {
echo 'Datei ist keine XML Datei.';
}
Damit sollte es eigentlich gehen.
 

Spatzihasi

Angel Of Death

AW: XML Upload

ich habs jetzt so gemacht:

PHP:
<?php // Dateiupload //
$datei = $_POST["datei"];
print "Datei: ".
$_FILES["datei"] ["name"]."<br>";
print "Dateigroesse: ".
$_FILES ["datei"] ["size"]." Bytes<br>";
print "Dateityp: ".
$_FILES ["datei"] ["type"]."<br>";
$erfolg = move_uploaded_file (
$_FILES ["datei"] ["tmp_name"],
$_FILES ["datei"] ["name"]);
if($_FILES["datei"]["type"] == "text/xml")
{
move_uploaded_file($_FILES['datei']['tmp_name'], 'esa_php02/'.$_FILES['datei']['name']);
print "Datei wurde erfolgreich hochgeladen";
print "<a href='artikel.php'></br></br>Hier geht´s zu den Artikeln</a>";
}
else{
print "<br>Sie haben einen falschen Dateityp hochgeladen <p>";
print "Bitte versuchen Sie es erneut";
print "<a href='upload.php'></br></br>Zurück zum Uploadformular</a>";
}
?>
aber eine andere ausser eine xml datei wird trotzdem wieder auf den testserver hochgeladen obwohl die richtige meldung kommt eben das es der falsche datentyp ist :(
ich benutz xampp

esa_php02 ist der ordner wo die artikeldaten.xml bzw die neue xml datei hingeladen werden soll

wenn ich
PHP:
$erfolg = move_uploaded_file (
weglasse, kommt zwar kein anderer datentyp in den ordner esa_php02 aber auch keine aktualisierte xml datei
 
Zuletzt bearbeitet:

Duddle

Posting-Frequenz: 14µHz

AW: XML Upload

Offensichtlich muss das erste move_uploaded_file() weg, du kannst nur einmalig eine Datei damit bewegen (danach ist copy() dein Freund).

Du sagst immer, es soll eine Datei aktualisiert werden. Das heißt wohl, es liegt schon eine gleichnamige dort. Vielleicht sind die Rechte so eingestellt, dass kein Überschreiben erlaubt ist? Du kannst testweise ja mal vorher die alte Datei löschen, bevor du das move_uploaded_file im if-Block ausführst. Falls das Löschen nicht funktioniert, musst du esa_php02 mehr Schreibrechte geben. Das ist dann betriebssystemspezifisch zu ergooglen.



Duddle
 

Sorc

Nicht mehr ganz neu hier

AW: XML Upload

Wie machst du das, dass die Datei Aktualisiert wird bzw. der Inhalt geändert wird?

Ansonsten kannst du bei
PHP:
print "<br>Sie haben einen falschen Dateityp hochgeladen <p>";
print "Bitte versuchen Sie es erneut";
print "<a href='upload.php'></br></br>Zurück zum Uploadformular</a>";

noch

PHP:
unlink('esa_php02/'.$_FILES['datei'][name]);
hinzufügen um die "Falsche" Datei zu löschen.
 

netbandit

Aktives Mitglied

AW: XML Upload

PHP:
<?php // Dateiupload //
# Überflüssig und ohne Sinn:

# $datei = $_POST["datei"];

print "Datei: ".
$_FILES["datei"] ["name"]."<br>";
print "Dateigroesse: ".
$_FILES ["datei"] ["size"]." Bytes<br>";
print "Dateityp: ".
$_FILES ["datei"] ["type"]."<br>";

# Hier wird bereits die Datei verschoben:

# $erfolg = move_uploaded_file (
# $_FILES ["datei"] ["tmp_name"],
# $_FILES ["datei"] ["name"]);

# und erst danach geprüft!?:

if($_FILES["datei"]["type"] == "text/xml")
{
move_uploaded_file($_FILES['datei']['tmp_name'], 'esa_php02/'.$_FILES['datei']['name']);
print "Datei wurde erfolgreich hochgeladen";
print "<a href='artikel.php'></br></br>Hier geht´s zu den Artikeln</a>";
}
else{
print "<br>Sie haben einen falschen Dateityp hochgeladen <p>";
print "Bitte versuchen Sie es erneut";
print "<a href='upload.php'></br></br>Zurück zum Uploadformular</a>";
}
?>
Fehler sind (aus)kommentiert.

Btw., was ist das?

PHP:
$_SERVER['upload/PHP_SELF']
 

Spatzihasi

Angel Of Death

AW: XML Upload

Btw., was ist das?

PHP:
$_SERVER['upload/PHP_SELF']

das soll einfach nur heissen, dass ich in der gleichen datei wieder zurück springe aufs einlogg formular.

das mit der xml hat folgenden sinn:

ich hab nen kleinen warenkorb den ich machen muss, dort gibt es eine artikeldaten.xml in der die artikel enthalten sind, die zur verfügung stehen um sie in den warenkorb zu setzen.
wenn ich jetz beispielsweise neue artikel in die xml datei eintragen will bzw. eintrage, werden die dann automatisch in meiner artikel.php aufgelistet als weitere artikel damit ich die dann wieder in den warenkorb einfügen kann.

daher das ganze spielchen
 
Zuletzt bearbeitet:

netbandit

Aktives Mitglied

AW: XML Upload

Also ich habe das Dingen von mir vorher getestet, inkl. der Kommentare, also 1zu1 und es funktioniert lokal unter XAMPP

Ordnerstruktur:

root:
- upload.php
- xml_upload.php
+ esa_php02
-|- artikel.xml

Wenn Du es schon online testest: siehe Duddles Beitrag (Rechte & Co.)

Solltest Dir vielleicht auch angewöhnen am Anfang der PHP-Datei folgende Zeile zu schreiben (zumindest in der Entwicklungsphase):

PHP:
 <?php
error_reporting(E_ALL);
?>
Saila hat hier noch ein paar wichtige Infos dazu geschrieben:

Hilft ungemein bei der Fehlersuche ;)
 

Spatzihasi

Angel Of Death

AW: XML Upload

RIESEN DANKE AN EUCH!!!

@netbandit: genau sooo hats geklappt :)

PHP:
<?php // Dateiupload //
print "Datei: ".
$_FILES["datei"] ["name"]."<br>";
print "Dateigroesse: ".
$_FILES ["datei"] ["size"]." Bytes<br>";
print "Dateityp: ".
$_FILES ["datei"] ["type"]."<br>";
if($_FILES["datei"]["type"] == "text/xml")
{
$erfolg = move_uploaded_file (
$_FILES ["datei"] ["tmp_name"],
$_FILES ["datei"] ["name"]);
move_uploaded_file($_FILES['datei']['tmp_name'], 'esa_php02/'.$_FILES['datei']['name']);
print "Datei wurde erfolgreich hochgeladen";
print "<a href='artikel.php'></br></br>Hier geht´s zu den Artikeln</a>";
}
else{
print "<br>Sie haben einen falschen Dateityp hochgeladen <p>";
print "Bitte versuchen Sie es erneut";
print "<a href='upload.php'></br></br>Zurück zum Uploadformular</a>";
}
?>

Es kommen auch keine anderen Dateien mehr mit hoch.

Danke ihr habt mir so geholfen.

Es ist schwer für jemanden der erst mit PHP anfängt sich durchzuwurschteln, aber hier kriegt man immer so geholfen :)

Danke!!!

<?php
error_reporting
(E_ALL);
?>

das ist ein fehlerreport oder? sowas hab ich heut auch schon irgendwo auf den 1000 seiten gelesen die ich durchgemacht hab.

und den link hab ich mir gespeichert :)
 

netbandit

Aktives Mitglied

AW: XML Upload

Halloooo?!? Moment noch: Du hast da schon wieder zwei mal move_uploaded_file drinne! Ist auch wieder murks was Du da gepostet hast ;)
 

Spatzihasi

Angel Of Death

AW: XML Upload

:rolleyes:

ich habs rausgelöscht.. so siehts jetzt aus

PHP:
<?php // Dateiupload //
print "Datei: ".
$_FILES["datei"] ["name"]."<br>";
print "Dateigroesse: ".
$_FILES ["datei"] ["size"]." Bytes<br>";
print "Dateityp: ".
$_FILES ["datei"] ["type"]."<br>";
if($_FILES["datei"]["type"] == "text/xml")
{
$_FILES ["datei"] ["tmp_name"];
$_FILES ["datei"] ["name"];
move_uploaded_file($_FILES['datei']['tmp_name'], 'esa_php02/'.$_FILES['datei']['name']);
print "Datei wurde erfolgreich hochgeladen";
print "<a href='artikel.php'></br></br>Hier geht´s zu den Artikeln</a>";
}
else{
print "<br>Sie haben einen falschen Dateityp hochgeladen <p>";
print "Bitte versuchen Sie es erneut";
print "<a href='upload.php'></br></br>Zurück zum Uploadformular</a>";
}
?>

und dann kommt diese fehlermeldung, beim hochladen einer artikeldaten.xml:

Warning: move_uploaded_file(esa_php02/artikeldaten.xml): failed to open stream: No such file or directory in /webhome/10073247/public_html/php02/esa_php02/xml_upload.php on line 12

Warning: move_uploaded_file(): Unable to move '/tmp/php2neLHD' to 'esa_php02/artikeldaten.xml' in /webhome/10073247/public_html/php02/esa_php02/xml_upload.php on line 12
Datei wurde erfolgreich hochgeladen
Als ich es hatte wie vorher hats geklappt gehabt :(
 

Spatzihasi

Angel Of Death

AW: XML Upload

und wenn ich das mach kommt dann die warnung:


Warning: move_uploaded_file(esa_php02/artikeldaten.xml): failed to open stream: No such file or directory in /webhome/10073247/public_html/php02/esa_php02/xml_upload.php on line 10

Warning: move_uploaded_file(): Unable to move '/tmp/php3OO5vo' to 'esa_php02/artikeldaten.xml' in /webhome/10073247/public_html/php02/esa_php02/xml_upload.php on line 10
Datei wurde erfolgreich hochgeladen
ich glaub ich lass das so wie oben, weils die einzigste variante ist die wirklich funktioniert. wieso auch immer :(
 

Duddle

Posting-Frequenz: 14µHz

AW: XML Upload

Du führst deine .php-Datei in esa_php02 aus. Natürlich kannst du dann nicht relativ von dort aus nach esa_php02 verschieben, du bist ja schon in dem Ordner.

Entferne die Angabe zum Unterverzeichnis oder schieb die .php-Datei eine Ebene tiefer.


Duddle
 

Spatzihasi

Angel Of Death

AW: XML Upload

hi duddle,

ich habs grad nochmal probiert, also mit dem weglassen der verzeichnis angabe und auch löschen des 2. move_uploaded_files funktioniert es jetzt wie gewünscht.

vielen dank an alle helfer für eure geduld :) ihr seid spitze
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.613
Beiträge
1.538.346
Mitglieder
67.524
Neuestes Mitglied
BSKGA
Oben