PHP-Upload Skript

blck

Mitglied
Hallo,
Ich habe hier ein Uploadscript, das jedoch leider nicht ganz rundläuft.
Ich habe es an einem anderen Rechner probiert, da lief es, leider läuft es nun nicht mehr. Der Ordner in dem der Upload laufen soll ist auch auf 777 gesetzt, also vollkommene Schreibrechte. Vielleicht findet ihr einen Fehler:
PHP:
<?
if ($_POST['fileupload']) {

	$orgdatei = $_FILES['file']['name'];
	$tmpdatei = $_FILES['file']['tmp_name'];
	$dateityp = GetImageSize($tmpdatei);
	$dateigro = $_FILES['file']['size'];

	echo $dateigro."<br>".$dateityp[2];

	$pfad = "xxx/xxx/".$orgdatei;

	if (($dateigro < 1024000) && ($dateityp[2]!=0)) {
		if (move_uploaded_file($tmpdatei, $pfad)) {
			echo "<script type='text/javascript'>alert('Die Datei ".$orgdatei." wurde erfolgreich hochgeladen');</script>";
		}else
			echo "<script type='text/javascript'>alert('Hochladen nicht erfolgreich');</script>";
	}else {
		echo "<script type='text/javascript'>alert('Entweder die Datei ist kein Bild oder sie ist zu gross');</script>";
	} 
}
?>

<form name='upload' action='' method='POST' enctype="multipart/form-data">
Datei hochladen: <input type='file' name='file'><br><br>
<input type='submit' name='fileupload' value='Hochladen'>
</form>
Wie sicher ist so ein Standartscript überhaupt?!

MfG Blck

EDIT1: So also ich habe es jetzt ohne die Überprüfung auf Dateityp ausgeführt. nur stimmt irgendwas immer noch nicht. Nun kann es allerdings nur am Pfad bzw. an der Konfiguration liegen.
EDIT2: An der liegt es auch die Variablen $tmpdatei,$orgdatei,$dateigro etc sind leer! Ein echo vom definierten Pfad funktioniert, bis auf die Ausgabe von $orgdatei;
 
Zuletzt bearbeitet:
Also ich sehe keinen Fehler, ich habe es dann mal ausgeführt und es läuft ohne Probleme. (Obwohl kleine Schönheitsfehler sind, aber die sind erstmal nebensächlich)


Pfadproblem:
angenommen deine Datei liegt unter htdocs/ProjektA/upload.php
$pfad = "xxx/xxx/".$orgdatei;
$pfad = $orgdatei; (liegt dann unter htdocs/ProjektA/image.jpg)

Oder möchtest du es in einen Ordner legen, welcher noch nicht existiert? Dann musst du ihn zuerst anlegen lassen!
 
Zuletzt bearbeitet:
Hallo,
na dann liegt es wohl wirklich an Schreibrechten für den Ordner, oder ich muss mir den Pfad mal genau anschauen. Das einzige was ich nicht verstehe ist, warum die $_FILES Vairablen leer sind. Diese müssten ja wenigstens gefüllt sein! Ein echo "blah" gibt später auch "blah" aus, was ja bedeutet, dass er auf jeden Fall in die Schleife geht. Oder sind die VAriablen leer, wenn sich ein Fehler ergibt?

MfG Blck

P.S. Freue mich immer auch über Korrekturen von Schönheitsfehlern, wenn jemand Zeit findet :)
 
Hi,

poste mal bitte das Ergebnis von:
Code:
print_r($_FILES);

//edit:
Und dann noch bitte das Ergebnis von:
Code:
var_dump(ini_get('register_globals'),ini_get('file_uploads'),ini_get('upload_tmp_dir'),ini_get('upload_max_filesize'),ini_get('post_max_size'),ini_get('max_input_time'));
 
Zuletzt bearbeitet:
Wieso sollte $_FILES leer sein?

Da steht viel drin, in Etwa so:

Code:
array(1) { ["file"]=> array(5) { ["name"]=> string(9) "Bild3.png" ["type"]=> string(9) "image/png" ["tmp_name"]=> string(23) "C:\xampp\tmp\php10E.tmp" ["error"]=> int(0) ["size"]=> int(194130) } }

Aber dann ist dein Pfad ja schon mal richtig, sonst hättest ja eine Fehlermeldung bekommen.

Schreib doch einfach mal:
chmod("XXX/", 777);

//mal eine persönliche Frage, hab es gerade geteste und ich bekomm die Rechte nicht runter gesetzt, wollte ja gucken ob dann ne Fehlermeldung kommt.
 
Hallo,
danke für eure Hilfe, hier mal die Ausgaben:
Code:
print_r:
 Array ( ) 
vardump:
string(0) "" string(1) "1" bool(false) string(2) "2M" string(2) "8M" string(2) "60"

Also scheint $_Files leer zu sein, erklären kann ich es mir auch nicht mehr wirklich!

MfG Blck
 
Schreib mal bitte
Code:
error_reporting(E_ALL|E_STRICT);
in dein Script, ganz oben. Und wenn eine Fehlermeldung kommt, bitte hier posten.

Ich kann bisher keinen Fehler sehen. Vielleicht jemand anders hier?
 
Hallo,
anscheinend kein Fehler sondern nur NOTICE:
Code:
Notice: Undefined index: fileupload in /home/xxx/fileupload.php on line 2
Und nach einem POST:
Code:
Notice: Undefined index: file in /home/xxx/fileupload.php on line 4

Notice: Undefined index: file in /home/xxx/fileupload.php on line 5

Notice: Undefined index: file in /home/xxx/fileupload.php on line 7
print_r:
Array ( ) vardump:
string(0) "" string(1) "1" bool(false) string(2) "2M" string(2) "8M" string(2) "60"
Fatal error: Cannot break/continue 1 level in /home/xxx/fileupload.php on line 17

Wobei das letzte durch ein break(); im php-Code verursacht wird.

So far,
Blck
 
Zuletzt bearbeitet:
Dann poste das gesamte Script bitte. Denn das was du oben gepostet hast, funktioniert bei mir lokal einwandfrei.

Das erste Notice bekommst du weg, indem du folgende Zeile änderst:
PHP:
if ($_POST['fileupload']) {
// zu ->
if ($_POST) {
 
Hallo!
Das erste Notice bekommst du weg, indem du folgende Zeile änderst:
PHP:
if ($_POST['fileupload']) {
// zu ->
if ($_POST) {
Ich würde es lieber so machen:
PHP:
if(isset($_POST['fileupload']))
So ist es eindeutig.

Die anderen 3 Hinweise besagen ja dass der Index "file" nicht existiert, also ist nichts vom Formular angekommen.
Eigentlich ruft das Formular beim leeren action die Seite auf, in der es sich befindet.
Trotzdem würde ich es mal mit einem
PHP:
<?php echo $_SERVER['PHP_SELF']; ?>
im action versuchen.

Gruss Dr Dau
 
Zurück