GELÖST PHP-Image-Upload Formular Problem!!! Dringend

Diskutiere PHP-Image-Upload Formular Problem!!! Dringend im Internet Forum Forum im Bereich Software Forum; Ok Leute ich habe folgendes Problem. Ich hab hier im Winboard Forum ein Upload Script gefunden welches stpe irgendwann 2001 angefangen und 2006...

hagan

Threadstarter
Dabei seit
12.12.2007
Beiträge
35
Alter
31
Ok Leute ich habe folgendes Problem. Ich hab hier im Winboard Forum ein Upload Script gefunden welches stpe irgendwann 2001 angefangen und 2006 fertiggestellt hat. Vielleicht kennt es ja jemand. Mein Problem ist das ich damit keine Dateien Uploaden kann. Hab über xampp einen Server gestartet und meine koplette site in die htdocs geladen (so wie mans halt macht:D).

Wenn ich nun im Formular ein Bild auswähle (es sind nur gif und jpeg zugelassen) und das ganze uploade zeigt er mir an das das kein bild wäre obwohl ich es mit gif versucht hab.

kann mir jemand helfen? Bitte is wirklich dringend. :unsure


auswahl.php

PHP:
<html>
<head>

 <title>[Upload] :: Auswahl</title>

 <meta http-equiv="expires" content="0">
 
</head>
<body bgcolor=#FFFFFF>
<font face="Arial" color=#000000 size=2>
<h2>Dateiauswahl</h2>
 
 <form enctype="multipart/form-data" action="upload.php" method="post">
 
 <table border=0><pre>
 <tr><td colspan=2 bgcolor=#999999>Wählen Sie das gewünschte Bild aus</td></tr>
 <tr>
  <td bgcolor=#cccccc>Datei</td>
  <td><input type="hidden" name="MAX_FILE_SIZE" value="2097152">
    <input name="userfile" type="file" size=30></td>
 </tr>
 <tr>
  <td></td>
  <td><input type=submit value="Upload"></td>
 </tr>
 </pre></table>
 </form>
</font>
</body>
</html>



upload.php

PHP:
<html>
<head>

 <title>[Upload} :: Informationen</title>

 <meta http-equiv="expires" content="0">

</head>
<body bgcolor=#FFFFFF>
<font face="Arial" color=#000000 size=2>
 <br>
 <h2>Dateiinformationen</h2>

<?php

  // Zielverzeichnis festlegen
  $DST="/../uploaded_pics/";

  // Informationen zur Import-Datei ausgeben:
  echo "<table border=0>";
  echo "<tr><td colspan=2 bgcolor=#999999>Angaben zur hochgeladenen Datei</td></tr>";
  echo "<tr><td bgcolor=#CCCCCC width=100>Datei</td><td>".$userfile_name."</td></tr>";
  echo "<tr><td bgcolor=#CCCCCC>Groesse</td><td>".$userfile_size." Bytes</td></tr>";
  echo "<tr><td bgcolor=#CCCCCC>Dateityp</td><td>".$userfile_type."</td></tr>";

  // pruefen, ob es sich um eine gif- oder jpg-datei handelt
  if ($userfile_type!="image/gif" && $userfile_type!="image/pjpeg")
  {
   echo "<b>FEHLER:</b> Die von Ihnen ausgewaehlte Datei ist kein Bild.<br><br>";
   exit;
  }

  echo "<tr><td></td><td>";
  // bestehende datei darf nicht ueberschrieben werden
  if (file_exists($DST.$userfile_name))
  {
   echo "Die Datei kann nicht hochgeladen werden, da schon eine Datei mit dem gleichen Namen existiert";
  } else
  {
   // datei darf hochgeladen werden
   if (copy($userfile, $DST.$userfile_name))
   {
     echo "Die Datei wurde fehlerfrei hochgeladen.";
   } else
   {
     echo "Die Datei konnte nicht hochgeladen werden.";
   }
  } // if datei vorhanden
  
  echo "</td>
     </tr></table>"; 
 
?>

</font>
</body>
</html>



Danke schonmal im voarus :D
 

imaetz70

Dabei seit
07.12.2005
Beiträge
9.256
Alter
50
Ort
Hamburg
was für eine Meldung erscheint denn, wenn du KEINE Bilder uploaden kannst??? irgend etwas muss ja gemeldet werden seitens des servers...

zudem sollte das script auch in deinen code passen. nicht jeder php-code passt in alle php-codes. leider.

und schau mal hier:

if ($userfile_type!="image/gif" && $userfile_type!="image/pjpeg")

da sollte eigentlich "jpeg" oder "jpg" stehen oder und nicht "pjpeg". ;)
 

hagan

Threadstarter
Dabei seit
12.12.2007
Beiträge
35
Alter
31
naja es wird halt alles normal angezeigt. nur halt wird die option ausgewählt: FEHLER: Die von Ihnen ausgewaehlte Datei ist kein Bild.

mit dem jpeg ohne p hab ichs auch schon probiert. geht auch nich. und gif geht ja auch nich.

aber danke für den schnellen request :)
 

stpe

Dabei seit
14.11.2001
Beiträge
2.729
Dann lass Dir mal den Dateityp Deiner Bilddatei anzeigen, z.B. über:
Code:
echo "<b>FEHLER:</b> Die von Ihnen ausgewaehlte Datei ist kein Bild (Dateityp: ".$userfile_type.").<br><br>";
Dann weißt Du, warum Dein Server Deine Datei nicht annimmt.

Gruß
Stefan
 

hagan

Threadstarter
Dabei seit
12.12.2007
Beiträge
35
Alter
31
Irgendwas haut hier überhaupt nich hin. Hinter "Dateityp:" zeigt er garnix an. Ihc glaub in der auswahl.php stimmt was nich. vielleicht wählt er die datei nich richtig aus.

btw: is nur ne vermutung. hab von php keine ahnung :)
 

stpe

Dabei seit
14.11.2001
Beiträge
2.729
Hat der Webserver Schreibrechte auf das temporäre Verzeichnis, in dem die hochgeladene Datei zwischengespeichert wird?

Überprüf mal die Serverlogs.
 

hagan

Threadstarter
Dabei seit
12.12.2007
Beiträge
35
Alter
31
??? ok wart ma ich hab hier nur n xampp apache auf xp laufen und das nur zum testen. ich mach zwar ne ausbildung zum mediendesigner aber ich hab bald den eindruck meine lehrer sind total inkompetent. ich geh mal davon aus das alle rechte gegeben sind.
angenommen nich ... was muss ich dann tun?

übrigens danke für deine hilfe :) ich muss mit dem mist spätestens nächste woche fertig werden. ich mach grad für ne firma hier ne webseite im rahmen eines praktikums.
 

h3r3tic

Dabei seit
14.02.2004
Beiträge
831
Alter
39
Ort
Berlin
Ähm ist das der vollständige Quelltext der Datei upload.php?

Wenn ja dann kann das gar nicht gehen weil du die hochgeladenen
Formulardaten gar nicht benutzt.

Ein Dateiupload hält die benötigten Informationen in $_FILES vor.

Die geänderte upload.php sollte so aussehen dann funktioniert es
bei mir jedenfalls. (dein HTML musst du noch dazu schreiben)
PHP:
<?php
    
  //ACHTUNG WICHTIG Zuweisung der Bildwerte an die Variablen
  $userfile_name = $_FILES['userfile']['name'];
  $userfile_size = $_FILES['userfile']['size'];
  $userfile_type = $_FILES['userfile']['type'];
  $userfile_temp = $_FILES['userfile']['tmp_name'];

  // Zielverzeichnis festlegen
  $DST="/../uploaded_pics/";

  // Informationen zur Import-Datei ausgeben:
  echo "<table border=0>";
  echo "<tr><td colspan=2 bgcolor=#999999>Angaben zur hochgeladenen Datei</td></tr>";
  echo "<tr><td bgcolor=#CCCCCC width=100>Datei</td><td>".$userfile_name."</td></tr>";
  echo "<tr><td bgcolor=#CCCCCC>Groesse</td><td>".$userfile_size." Bytes</td></tr>";
  echo "<tr><td bgcolor=#CCCCCC>Dateityp</td><td>".$userfile_type."</td></tr>";

  // pruefen, ob es sich um eine gif- oder jpg-datei handelt
  if ($userfile_type!="image/gif" && $userfile_type!="image/jpeg")
  {
   echo "<b>FEHLER:</b> Die von Ihnen ausgewaehlte Datei ist kein Bild.<br><br>";
   exit;
  }

  echo "<tr><td></td><td>";
  // bestehende datei darf nicht ueberschrieben werden
  if (file_exists($DST.$userfile_name))
  {
   echo "Die Datei kann nicht hochgeladen werden, da schon eine Datei mit dem gleichen Namen existiert";
  } else
  {
   //HIER AUCH NOCH EINE KLEINE ÄNDERUNG NACH $userfile_temp
   // datei darf hochgeladen werden
   if (copy($userfile_temp, $DST.$userfile_name))
   {
     echo "Die Datei wurde fehlerfrei hochgeladen.";
   } else
   {
     echo "Die Datei konnte nicht hochgeladen werden.";
   }
  } // if datei vorhanden
  
  echo "</td>
     </tr></table>"; 
 
?>

Scheinbar hat euch der Lehrer nicht erklärt das ihr die übertragenen
Formulardaten auch benutzen müßt denn aus dem nichts kommt auch nichts :D
 

hagan

Threadstarter
Dabei seit
12.12.2007
Beiträge
35
Alter
31
Warning: copy(/../uploaded_pics/t_fotos_giessen_10072006_013_1jpeg_196.jpeg) [function.copy]: failed to open stream: No such file or directory in C:\xampplite\htdocs\webseite_backup_30.11.07\html\upload.php on line 65
Die Datei konnte nicht hochgeladen werden.


lol Ich heul gleich. aber immerhin zeigt es schonma was an. Das kann schonmal nichts schlechtes verheißen.
 

imaetz70

Dabei seit
07.12.2005
Beiträge
9.256
Alter
50
Ort
Hamburg
Irgendwas haut hier überhaupt nich hin. Hinter "Dateityp:" zeigt er garnix an. Ihc glaub in der auswahl.php stimmt was nich. vielleicht wählt er die datei nich richtig aus.

btw: is nur ne vermutung. hab von php keine ahnung :)

mmh, ist aber schon heftig, wenn du mit PHP arbeiten möchtest, aber davon ansich nicht viel Ahnung hast.

Dann hast noch einiges vor dir. ;)

Aber vom prinzip ist es, wenn man sich damit beschäftigt, erlernbar. ;)


Warning: copy(/../uploaded_pics/t_fotos_giessen_10072006_013_1jpeg_196.jpeg) [function.copy]: failed to open stream: No such file or directory in C:\xampplite\htdocs\webseite_backup_30.11.07\html\ upload.php on line 65
Die Datei konnte nicht hochgeladen werden.

mmh, sieht aus als wenn er das bild nicht findet unter dem pfad.. könnte ein zugriffsrecht fehlen, damit es hochgeladen werden kann...

schau, in der Fehlermeldung steht drin, woher der Fehler kommt:

upload.php on line 65

schau mal in diese upload.php und dann in die zeile 65. eventuell findest du dort etwas.

PS: die zeilenangabe kann etwas variieren, also prüfe die zeilen 60-70 mal. manchmal stimmt die Zeilenangabe der Warnmeldung nicht genau mit der zeielenangabe in deinem PHP-Programm überein. ;) So ist das manchmal mit Linux, PHP und Co.
 

h3r3tic

Dabei seit
14.02.2004
Beiträge
831
Alter
39
Ort
Berlin
Naja dein Uploadverzeichnis ist eine Ebene über dem aktuellen Verzeichnis.
Gibt es dort denn dieses Uploadverzeichnis?

Desweiteren darfst du beim kopieren nicht den echten Dateinamen als Quelle nehmen weil php die Datei erstmal temporär ablegt deshalb auch userfile_temp.

Probier mal $DST="uploaded_pics/";

und packe in das Verzeichnis wo auswahl.php und upload.php liegt ein Verzeichnis namens uploaded_pics dann sollten die Fotos dort auch landen.
 

hagan

Threadstarter
Dabei seit
12.12.2007
Beiträge
35
Alter
31
mmh, ist aber schon heftig, wenn du mit PHP arbeiten möchtest, aber davon ansich nicht viel Ahnung hast.

Dann hast noch einiges vor dir.

Aber vom prinzip ist es, wenn man sich damit beschäftigt, erlernbar.

Ich weiß wir haben so einen lehrer der uns eigentlich PHP beibringen sollte aber lieber davon redet wie feucht sein rasen am morgen ist. naja Und im Juni hab ich Prüfung und da kommt auch PHP dran. Normalerweise sollte sowas kein problem sein aber naja... man siehts ja.

ich muss übrigens mit PHP arbeiten, da ich ein Praktikum in einer Druckerei mache und für die ne Webseite machen soll. Heftig wirds dann wenn der onlineshop kommt. Zum glück kann ich n büschen SQL. da sollte das gehn.
 

hagan

Threadstarter
Dabei seit
12.12.2007
Beiträge
35
Alter
31
Leute ihr seid Gold wert!!!!!

ich danke euch vielmals!!!

klappt subber!


eine Sache noch: wie muss ich DST schreiben wenn ich den Zielordner eine Ebene höher haben will?
 

h3r3tic

Dabei seit
14.02.2004
Beiträge
831
Alter
39
Ort
Berlin
Das sollte mit $DST="../uploaded_pics/"; gehen
du hattest vorher ein / am Anfang das sollte der Fehler gewesen sein.
 

hagan

Threadstarter
Dabei seit
12.12.2007
Beiträge
35
Alter
31
Eine Frage noch dann hör ich auf euch zu nerven ;)

Wie setz man in PHP einen Link mit dem Target mainFrame?

mein Ziel ist es von einem Kontaktformular auf die Uploadseite zu gelangen. Wenn ich im Kontaktformular auf senden gegangen bin kommt die Meldung, das meine Mail verschickt wurde. Darunter soll der link zur upload.php erscheinen. wie schreibe ich das?

kontakt.php

PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Kontakt</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><style type="text/css">
<!--
body {
	background-image: url(../pics/mainback.jpg);
background-attachment:fixed;
background-position:center;
background-repeat:no-repeat;
}

-->
</style></head>
<body>

<script language=JavaScript>
<!--
 function isValid() { 

   var msg = "";
   
   if (kontaktFormular.eMail.value.indexOf("@") < 1 ||
       kontaktFormular.eMail.value.indexOf(".") < 1) {
     msg += "- Die E-Mail-Adresse ist syntaktisch nicht korrekt.\n";
   }
   
   if(kontaktFormular.vorName.value == "") {
     msg += "- Leeres Feld: Vorname:\n";
   }

   if(kontaktFormular.nachName.value == "") {
     msg += "- Leeres Feld: Nachname:\n";
   }

   if(kontaktFormular.betreff2.value == "") {
     msg += "- Leeres Feld: Betreff:\n";
   }

   if(kontaktFormular.nachricht.value == "") {
     msg += "- Leeres Feld: Nachricht:\n";
   }
   
   if(msg == "") {
     return true;   
   }
   alert(msg);
   return false;
 }
-->
</script>
<?php
  
  $formularAnzeigen = false;
  if (!empty($_POST["senden"]) && (
      empty($_POST["vorName"]) ||
      empty($_POST["nachName"]) ||
      empty($_POST["eMail"]) ||
      empty($_POST["betreff2"]) ||
      empty($_POST["nachricht"]))) {
    $formularAnzeigen = true;
    echo '<span style="color: #FF0000; font-size: x-large;">Bitte alle Pflichtfelder ausfuellen.</span>';
  } else if (!empty($_POST["senden"]) &&
             !isEmail($_POST["eMail"])) {
    $formularAnzeigen = true;  
    echo '<span style="color: #FF0000; font-size: x-large;">Die E-Mail-Adresse ist nicht korrekt.</span>';
  } else if (empty($_POST["senden"])) {
    $formularAnzeigen = true;  
  }
  if ($formularAnzeigen) {
?>
<form name="kontaktFormular" method="post" action="<?=$_SERVER[PHP_SELF]; ?>" onSubmit="return isValid()">
  <table width="800" border="0">
<!--anfang Anrede-->    
    <tr>
      <td width="169" align="center">Pflichtfelder</td>
      <td width="169">
        <strong>Anrede:</strong>
      </td>
      <td width="340">
        <select name="anrede">
          <option <?=($_POST['anrede']=='Frau')?'selected':''?>>Frau</option>
          <option <?=($_POST['anrede']=='Herr')?'selected':''?>>Herr</option>
        </select></td>
      <td>
        Bitte wählen Sie hier Ihre Anrede aus.
      </td>
    </tr>
<!--ende anrede-->
<!--anfang vorName-->  
    <tr>
      <td><div align="center">*</div></td>
      <td><strong>
        Vorname:
      </strong></td>
      <td>
      <input name="vorName" type="text" value="<?=$_POST['vorName']; ?>" /></td>

      <td>
         
      </td>          
    </tr>
<!--ende vorName-->
<!--anfang nachName-->    
    <tr>
      <td><div align="center">*</div></td>
      <td><strong>
        Nachname:
      </strong></td>
      <td><input name="nachName" type="text" value="<?=$_POST['nachName']; ?>" /></td>
      <td>
         
      </td>          
    </tr>
<!--ende nachName-->
<!--anfang eMail-->        
    <tr>
      <td><div align="center">*</div></td>
      <td><strong>
        E-Mail:
      </strong></td>
      <td><input name="eMail" type="text" id="eMail" value="<?=$_POST['eMail']; ?>" /></td>
      <td>
        zB: [email protected], [email protected]
      </td>      
    </tr>
<!--ende eMail-->    
<!--anfang betreff2-->    
    <tr>
      <td><div align="center">*</div></td>
      <td><strong>
        Betreff:
      </strong></td>
      <td><select name="betreff2" id="betreff2">
        <option<?=($_POST['betreff2']=='Tampondruck')?' selected':' '?>>Tampondruck</option>
        <option<?=($_POST['betreff2']=='Offsetdruck')?' selected':' '?>>Offsetdruck</option>
        <option<?=($_POST['betreff2']=='Digitaldruck')?' selected':' '?>>Digitaldruck</option>
        <option<?=($_POST['betreff2']=='Transferdruck')?' selected':' '?>>Transferdruck</option>
        <option<?=($_POST['betreff2']=='Kopierservice')?' selected':' '?>>Kopierservice</option>
        <option<?=($_POST['betreff2']=='Werbeartikel')?' selected':' '?>>Werbeartikel</option>
        <option<?=($_POST['betreff2']=='Werbetrucks')?' selected':' '?>>Werbetrucks</option>
      </select></td>
      <td>
        Bitte wählen Sie einen Betreff aus.
      </td>          
    </tr>
<!--ende betreff2-->
<!--anfang nachricht-->      
    <tr>
      <td><div align="center">*</div></td>
      <td><strong>
        Nachricht:
      </strong></td>
      <td><textarea name="nachricht" cols="40" rows="10"><?=$_POST['nachricht']; ?></textarea></td>
      <td>
         
      </td>          
    </tr>
<!--ende nachricht-->
<!--anfang kopie-->        
    <tr>
      <td> </td>
      <td><strong>
        Kopie der Nachricht:
      </strong></td>
      <td><input name="kopie" type="checkbox" value="checked" <?=$_POST['kopie']; ?>></td>
      <td>
        Möchten Sie eine Kopie der Nachricht per E-Mail erhalten?
      </td>          
    </tr>
<!--ende kopie-->    
    <tr>
      <td colspan="3">
        <div align="center">
          <input name="senden" type="submit" value="Senden" />
        </div>
      </td>          
      <td> </td>          
    </tr>
  </table>
</form>
<br>
<center><a href="auswahl.php">Hier klicken um zum Upload-Formular zu gelangen</a></center>
<br>


<?php

  } else {
    $eMail = '
        
Anrede:
'.$_POST['anrede'].'
        
Vorname:
'.$_POST['vorName'].'
        
Nachname:
'.$_POST['nachName'].'
        
E-Mail:
'.$_POST['eMail'].'
        
Betreff:
'.$_POST['betreff2'].'
        
Nachricht:
'.$_POST['nachricht'].'
        
Kopie der Nachricht:
'.$_POST['kopie'].'';
    
    if (@mail("[email protected]",
         "Neue Nachricht vom Kontaktformular",
         $eMail)) {
      echo "Ihre Nachricht wurde an uns verschickt, vielen Dank!<br />
      "; 
    } else {
      echo "E-Mail-Verkehr funktioniert zur Zeit nicht<br />";
    }
    if ($_POST['kopie']) {
      if (@mail($_POST['eMail'],
           "Kopie Mail Druckerei Uwe Schirrmeister",
           $eMail)) {
        echo "Sie haben eine Kopie der Nachricht zugeschickt bekommen.<br />";
      }
    }
  }
  
  function isEmail($email) {
    $nonascii      = "\x80-\xff"; 
    $nqtext        = "[^\\$nonascii\015\012\"]";
    $qchar         = "\\[^$nonascii]";
    $protocol      = "(?:mailto:)";
    $normuser      = "[a-zA-Z0-9][a-zA-Z0-9_.-]*";
    $quotedstring  = "\"(?:$nqtext|$qchar)+\"";
    $user_part     = "(?:$normuser|$quotedstring)";
    $dom_mainpart  = "[a-zA-Z0-9][a-zA-Z0-9._-]*\.";
    $dom_subpart   = "(?:[a-zA-Z0-9][a-zA-Z0-9._-]*\.)*";
    $dom_tldpart   = "[a-zA-Z]{2,5}";
    $domain_part   = "$dom_subpart$dom_mainpart$dom_tldpart";
    $regex         = "$protocol?$user_part\@$domain_part";
    if (preg_match("/^$regex$/",$email)) {
      return true;
    }
    return false;
  }
?>



</body>
 

h3r3tic

Dabei seit
14.02.2004
Beiträge
831
Alter
39
Ort
Berlin
Na also das solltest du doch auch so hinbekommen mit einem einfachen echo

echo '<a href="upload.php" target="FRAMENAME" >uploadseite</a>';

Nur zu beachten das in einfachen '' keine Variablen ausgewertet werden wenn du das dort noch brauchst.

Btw wär eigentlich besser gewesen nen neues Thema anzufangen.

Ansonsten kann ich dir die doku von www.php.net sehr empfehlen.
 
Thema:

PHP-Image-Upload Formular Problem!!! Dringend

PHP-Image-Upload Formular Problem!!! Dringend - Ähnliche Themen

Mails von eigenem Server landen im Spam: Hey, ich versuche nun seit gefühlter Ewigkeit meinen Mailserver so zu konfigurieren, dass Mails in Outlook nicht mehr im Spam landen, jedoch...
Eigene InternetSeite mit Suchmaschinen Html code fragen: Ich will mir eine eigene Internet Start Seite Bastelln , Habe einiges schon gefunden aber leider kriege Ich die suchmaschienen nicht untereinander...
GELÖST Website verschiebt sich nach unten: Hallo Leute, Ich habe ein kleines Problemchen. Und zwar soll ich eine HTML Seite für den Informatikunterricht gestalten. Jeder muss eine gestalten...
HP mit Komposer (früher NVU): Wie einige vllt noch wissen, bastel ich gerade eine HP zusammen. Das "Template" steht soweit schon. "http://jugendraum-roda.bplaced.de/"...
PHP-Image-Upload Formular Problem!!! Dringend: Ok Leute ich habe folgendes Problem. Ich hab hier im Winboard Forum ein Upload Script gefunden welches stpe irgendwann 2001 angefangen und 2006...
Oben