Problem mit Upload Script

mtk-flo

Erfahrenes Mitglied
Also ich habe folgendes Problem.
Ich habe auf meinem Webspace ein Upload script liegen, dass auch funktioniert.

Nun soll ich auf der Arbeit auch ein Upload script machen. Da hab ich mir gedacht, nimmst du das von deinem Webspace, nur funktioniert es nicht auf der Arbeit...

Warum ? Hat jemand von euch eine Erklärung ?

Hier ist mal mein Formular:

Code:
<form ACTION='upload.php' METHOD='POST'  ENCTYPE='multipart/form-data'>
<TABLE ALIGN='CENTER' WIDTH='500' BORDER='0' cellpadding='2' CELLSPACING='0'>
<TR>
   <TD width='25%'>Bild:</TD>
   <TD width='*'><input type='file' name='bilddatei'></TD>
</TR>
<TR>
   <TD colspan='2' align='center'><input type='submit' name='senden' value='speichern'></TD>
</TR>
</TABLE>


Und hier ist mein Code:

Code:
if($bilddatei == "")
{
   echo "ERROR";
}
else
{
   $error1 = 0;
   $error2 = 0;
   $error3 = 0;

   $extlimit = "yes"; //Do you want to limit the extensions of files uploaded
   $limitedext = array(".gif",".jpg",".png",".jpeg",".GIF",".JPG",".PNG",".JPEG");	//Extensions you want files uploaded limited to.
   $sizelimit = "no"; //Do you want a size limit, yes or no?
   $sizebytes = "400000"; //size limit in bytes ( 400 kb )
   if($senden){
	  if (($sizelimit == "yes") && ($bilddatei_size > $sizebytes)) {
		 $error3 = 1;
	  }

	  $ext = strrchr($bilddatei_name,'.');
	  if (($extlimit == "yes") && (!in_array($ext,$limitedext))) {
		 $error1 = 1;
	  }
	  //Der Ordner images liegt auf dem Server, dort werde die Bilder kopiert.
	  //falls im pictures Ordner der Name der Bilddatei schon existiert, dann soll eine
	  //Fehlermeldung kommen.
	  elseif (file_exists("pictures/".$bilddatei_name)) {
		 $error2 = 1;
	  }
	  //ansonsten wird die Datei im Ordner images kopiert
	  else{
		 copy($bilddatei,"pictures/".$bilddatei_name);
	  }
   }//if($senden)

	  echo "Datei wurde hochgeladen";
	  if($error1 == 1)
	  {
		 echo "Datei hat nicht die richtig Endung";
	  }
	  if($error2 == 1)
	  {
		 echo "Datei exestiert schon.";
	  }

	  if($error3 == 1)
	  {
		 echo "Datei ist zu groß";
	  }

	  if(($error1 == 0) && ($error2 == 0) && ($error3 == 0))
	  {
		 echo "Bildupload war erfolgreich";
	  }
}
 
vermutlich sind ist dem server register_globals auf off gestellt, das bedeutet, du musst auf die Bilddatei mittels $_POST['bilddatei'] zugreifen

edit: im php Handbuch gibt es einen Abschnitt, der das Uploaden von Dateien recht ausführlich erklärt
 
Zuletzt bearbeitet:
$id = $_POST['id'];
$name = $_POST['name'];
$vorname = $_POST['vorname'];
$telefon = $_POST['telefon'];
$fax = $_POST['fax'];
$email = $_POST['email'];
$abt = $_POST['abt'];
$jobdes = $_POST['jobdes'];
$raum = $_POST['raum'];
$ort = $_POST['ort'];
$bilddatei $_POST['bilddatei'];

Das sind mein Werte, die ich vom Formular bekomme.

Und diesen Fehler bekomm ich zurück:

Code:
Notice: Undefined variable: bilddatei in d:\html\test\florian\wiw_dev\admin_update.php on line 17
ERROR
Warning: Cannot modify header information - headers already sent by (output started at d:\html\test\florian\wiw_dev\admin_update.php:17) in d:\html\test\florian\wiw_dev\admin_update.php on line 70
 
Wie schon in der Anleitung steht:
Der Zugriff auf die Variablen $bildatei, $bildatei_size usw. geht nur dann, wenn register_globals auf on steht. Bei neueren php Versionen steht es standardmässig auf off.
Das bedeutet:

Du musst über das $_FILES - Array drauf zugreifen, also zB mit $_FILES['bildatei']['name'] oder $_FILES['bilddatei']['size'].

edit:
Der Name der Datei wird nicht im $_POST array gespeichert, du kannst mit $_POST garnicht drauf zugreifen.
 
Zuletzt bearbeitet:
Zurück