• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Problem mit Upload-Script

Status
Für weitere Antworten geschlossen.

shade

Neues Mitglied
Hallöchen. Ich habe ein Problem mit meinem Uploadformular, und zwar sagt er mit immer, dass nur gif und jpeg Dateien hochgeladen werden dürfen. Es ist aber eine .gif bzw .jpg Datei, hoffe jemand kann mir helfen. Find einfach den Fehler nicht.

Vielen Dank

PHP:
<html>
<link href="../../style.css" rel="stylesheet" type="text/css">
<body>
 <p class="text_normal">
   <?PHP
if (isset($_GET['button'])) {
   include("../../scrpt/db_connect.php");
   $datei=$_GET['datei'];
   $unternehmen = $_SESSION['unternehmen'];
   $link = $_GET['link'];
   $sql = "INSERT INTO uplds(Datei,Link,Unternehmen) VALUES('".$datei."','".$link."','".$unternehmen."');";
 mysql_query($sql);
 mysql_close();
 
 $tempname = $_FILES['file']['tmp_name']; 
 $name = $_FILES['file']['name']; 
 $type = $_FILES['file']['type']; 
 $size = $_FILES['file']['size']; 
 if($type != "image/gif" && $type != "image/pjpeg") { 
    $err[] = "nur gif und jpeg Dateien dürfen hochgeladen werden."; 
 } 
 if($size > "1500000") { 
    $err[] = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 1500 KB!"; 
 } 
 if(empty($err)) { 
    copy("$tempname", "../usrmgt/uploads/$name"); 
    echo "Die Datei $name wurde erfolgreich hochgeladen!"; 
 } 
 else { 
    foreach($err as $error) 
    echo "$error<br>"; 
 } 
 ?>
 Der Datensatz wurde hinzufgefügt<br>
 <a href="javascript:self.close()">Schließen</a>
 <!-- <a href="../../dwnlds_insert.php">neuer Eintrag</a><br>
 <a href="../../dwnlds_show.php">zur Übersicht</a> -->
 <?PHP
} else { ?>
 </p>
<form method="get" action="uplds_insert.php">
 <table width="625" height="28">
   <tr>
     <td width="88"><span class="text_normal">Datei</span></td>
     <td width="164"><input type="text" name="datei"></td>
     <td width="26"><span class="text_normal">Link</span></td>
     <td width="144"><input type="text" name="link"></td>
     <td width="85"><span class="text_normal">Unternehmen</span></td>
     <td width="90"><input name="unternehmen" type="text" size="15"></td>
   </tr>
 </table>
 <table width="625" height="48">
   <tr>
     <td class="text_normal">Auswählen</td>
     <td><code>
       <input name="file" type="file" id="file" size="48" />
     </code></td>
   </tr>
   <tr>
     <td><input type="submit" name="button" value=" OK "></td>
     <td>&nbsp;</td>
   </tr>
 </table>
 </form>
 <?PHP
} ?>
</body>
</html>
 
Werbung:
PHP:
if($type != "image/gif" && $type != "image/pjpeg") {
pjpeg macht mich auch irgendwie stutzig, sowas gibt es doch nicht....
 
pjpeg macht mich auch irgendwie stutzig, sowas gibt es doch nicht....
Oh Danke, ein Schreibfehler ;)

Aber daran lag es nicht...


EDIT
Die Variable $name ist leer, bekommt er also die Werte nicht, die in dem Dateidialog übergeben werden!?
 
Zuletzt bearbeitet:
Werbung:
Soweit ich mich erinnere hatte ich so ein Problem auch mal. Das lag damals wohl an der Größe der hochgeladenen Datei. Die war schlichtweg größer, als von den Servereinstellungen her erlaubt.

Gruß thuemmy
 
Habs jetzt mal mit einer 486 Byte großen Datei ausprobiert, funktioniert trotzdem nicht. Trotzdem Dankeschön.
Man was is das nur für ein Problem...
 
Werbung:
Also so hier: print_r($_FILES);
Ergebnis ist folgendes: Array ( )

Also bekommt er nicht die Werte aus dem Dateidialog, aber warum ich!?
 
Jetzt hab ich mir Deinen Code mal komplett angeguckt. In Deinem <form>-Tag fehlt noch ein enctype="multipart/form-data".

Gruß thuemmy

 
Den Fehler hab ich auch schon gefunden gehabt, aber ändert nichts an der Situation. Hier mal der upgedatete Codeschnippsel

PHP:
<html>
<link href="../../style.css" rel="stylesheet" type="text/css">
<body>
<p class="text_normal">
<?PHP
    if (isset($_GET['button'])) {
         $tempname = $_FILES['file']['tmp_name']; 
         $name = $_FILES['file']['name']; 
         $type = $_FILES['file']['type']; 
         $size = $_FILES['file']['size']; 
         if($type != "image/gif" && $type != "image/jpeg") { 
            $err[] = "nur gif und jpeg Dateien dürfen hochgeladen werden."; 
         } 
         if($size > "1500000") { 
            $err[] = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 15 KB!"; 
         } 
         if(empty($err)) { 
            copy("$tempname", "../usrmgt/uploads/$name"); 
            echo "Die Datei $name wurde erfolgreich hochgeladen!"; 
         } 
         else { 
            foreach($err as $error) 
            echo "$error<br>"; 
         } 
   

           $datei=$_GET['datei'];
           $unternehmen = $_SESSION['unternehmen'];
           $link =$name;
           $sql = "INSERT INTO uplds(Datei,Unternehmen,Link) VALUES('".$datei."','".$unternehmen."','".$link."');";
         mysql_query($sql);
         mysql_close();
?> 
    Der Datensatz wurde hinzufgefügt<br>
    <?PHP print_r($_FILES); ?>
     <a href="javascript:history.back()">Zurück</a>
<?PHP
} else { 
?>
</p>
    <form enctype="multipart/form-data" action="uplds_insert.php" method="get">
        <div align="left">
            <table width="267" height="28">
                <tr>
                    <td width="70"><span class="text_normal">Datei</span></td>
                     <td width="185"><input type="text" name="datei"></td>
                 </tr>
            </table>
            <table width="423" height="48">
<tr>
                    <td width="105" class="text_normal">Auswählen</td>
                    <td width="507">
                    <code>
                       <input name="file" type="file" id="file" size="40" />
                    </code></td>
                 </tr>
                  <tr>
                    <td><input type="submit" name="button" value=" OK "></td>
                    <td>&nbsp;</td>
                  </tr>
            </table>
      </div>
    </form>
<?PHP
} ?>
</body>
</html>
 
Werbung:
Mal eine blöde Frage. Du wählst das Bild aber schon über den Dateiauswahldialog aus, oder?

Gruß thuemmy
 
Ich finde es immer wieder überraschend, warum man solch simple Fehler nicht findet.

Und zwar heißt es nicht:
$_GET['button']
sondern
$_POST['button']

Gibt noch nen paar andere Stellen, die du so fixxen must, aber das kannst du selber machen.

Und zwar ganz simpel, GET ist ein URL Parameter, du willst aber ein Formular an den Server senden, dann verwendet man ausschließlich POST.

Noch ein Tipp, überprüft bei Fehlern erst mal die Syntax und Zusammenhänge.
 
Zuletzt bearbeitet:
Werbung:
In beiden Fällen (GET und POST) wird nicht das Formular gesendet, sondern lediglich die im Formular enthaltenen Daten. Aber genug der Erbsenzählerei.
Zitat SelfHTML:

Datei-Uploads funktionieren nur mit method="post". Wichtig ist außerdem, dass Sie im einleitenden <form>-Tag die Angabe enctype="multipart/form-data" notieren. Andernfalls erhalten Sie lediglich den Dateinamen der ausgewählten Datei übermittelt, nicht jedoch die Datei selbst.
Wobei es bei kleinen Dateien, die hochgeladen werden, auch mit GET funktionieren soll.

Gruß thuemmy
 
Werbung:
Ich hab die Aussage allgemein interpretiert, nicht auf Uploads bezogen.
GET ist in der Tat auf eine bestimmte Länge beschränkt, ich erinnere mich an eine Zeit vor 8 Jahren, als im Netscape 4 ca. 1024 Zeichen möglich waren und im IE4 grad mal 256 Zeichen.
 
Ich wollte damit nur sagen, dass man standardmäßig POST benutzt um die Daten aus einen Formular auszuwerten und zu verarbeiten. Wer benutzt denn schon Get? Außerdem ist das auch eine Frage der Sicherheit.
 
Ich wollte damit nur sagen, dass man standardmäßig POST benutzt um die Daten aus einen Formular auszuwerten und zu verarbeiten.
Na, dann war meine Antwort ja richtig, denn das ist falsch.

Wer benutzt denn schon Get?
Das ist jedermanns eigene Sache.

Außerdem ist das auch eine Frage der Sicherheit.
Wieso? bertragen werden die beiden genauso über eine ungesicherte Leitung, wenn Du nicht gerade SSL benutzt.
 
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben