THeGuardian: Grade voll verpeilt -.-

Ich suche jetzt schon seit ner stunde diesen fehler, das mach mich wahnsinnig!!!

<form action="upload.php" method="post" enctype="multipart/form-data" name="upload">
<input type="file" name="file"><input type="submit" name="submit" value="Upload">
</form>
<?php

// Variabeln festlegen
$max_byte_size = 20971520;
$allowed_types = "(jpg|jpeg|gif|bmp|png)";

// Formular wurde abgeschickt
if($_POST["submit"] == "Upload");

// Wurde wirklich eine Datei hochgeladen?
if(is_uploaded_file($_FILES["file"]["tmp_name"]) {

// Gültige Endung? ($ = Am Ende des Dateinamens) (/i = Groß- Kleinschreibung nicht berücksichtigen)
if(preg_match("/." . $allowed_types . "$/i", $_FILES["file"]["name"])) {

// Datei auch nicht zu groß
if($_FILES["file"]["size"] <= $max_byte_size) {

// Alles OK -> Datei kopieren
if(copy($_FILES["file"]["tmp_name"], "images/".$_FILES["file"]["name"])) {

$Filename = $_FILES["file"]["name"];
$Filesize = $_FILES["file"]["size"];
$Filetype = $_FILES["file"]["type"];

}

include "inc/config.php";

if(!@mysql_connect($SQLHost, $SQLUser, $SQLPwd)) {
        die("Es konnte keine Verbindung aufgebaut werden");
    }

if(!mysql_select_db($SQLDatabase)) {
        die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error());
    }

$sql = "INSERT INTO enflame_images(Titel, URL_Full, URL_Thumb, Page)
VALUES ('".$Filename."', 'images/".$Filename."', 'images/".$Filename."_Thumb', '1');";

$result = mysql_query($sql) OR die(mysql_error());
?>

Was könnte hierdran falsch sein? bitte!!!

  1. Hallo.

    Ich suche jetzt schon seit ner stunde diesen fehler, das mach mich wahnsinnig!!!

    Habe zwar keine Lust, auch den Fehler zu suchen, verraten hast du ja nicht, was falsch läuft, aber das kommt mir komisch vor:

    // Formular wurde abgeschickt
    if($_POST["submit"] == "Upload");

    Nutzlos.

    if(!@mysql_connect($SQLHost, $SQLUser, $SQLPwd)) {

    Fehlermeldungen sind dazu da, gelesen zu werden. Warum unterdrückst du sie, anstatt ordentlich display_errors zu setzen?

    $sql = "INSERT INTO enflame_images(Titel, URL_Full, URL_Thumb, Page)
    VALUES ('".$Filename."', 'images/".$Filename."', 'images/".$Filename."_Thumb', '1');";

    Keinerlei eigene Absicherung gegen manipulierte Daten. Sehr schlecht.

    Was könnte hierdran falsch sein? bitte!!!

    Viel.

  2. Hello,

    if($_POST["submit"] == "Upload");
    if(is_uploaded_file($_FILES["file"]["tmp_name"]) {
    if(preg_match("/." . $allowed_types . "$/i", $_FILES["file"]["name"])) {
    if($_FILES["file"]["size"] <= $max_byte_size) {
    if(copy($_FILES["file"]["tmp_name"], "images/".$_FILES["file"]["name"])) {
    }

    weißt du, worauf ich tierisch stehe? Formatierten Quelltext. Paarweise Klammern. SYNTAX!

    • dein erstes if ist vollkommen bedeutungslos für den Ablauf.
    • die Verschachtelung der nachfolgenden ifs kann ich nicht mal erraten...

    MfG
    Rouven

    --
    -------------------
    sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
    Wenn du die Nadel im Heuhaufen nicht findest, zünde den Heuhaufen an.
  3. Hallo THeGuardian,

    Was könnte hierdran falsch sein? bitte!!!

    Du hast viel mehr öffnende geschweifte Klammern im Code als schließende.

    Jonathan

  4. Hi,

    Ich suche jetzt schon seit ner stunde diesen fehler,

    Erwarte bitte nicht, dass wir ebenfalls so viel Zeit darauf verschwenden, nach deiner *Problembeschreibung* zu suchen -

    das mach mich wahnsinnig!!!

    • da lassen wir, also ich zumindest, dich lieber mit dem Wahnsinn allein, bzw. weisen dich, falls der dich wider Erwarten nicht glueckseelig machen sollte, auf die Tipps für Fragende hin.

    MfG ChrisB

  5. Hello,

    $allowed_types = "(jpg|jpeg|gif|bmp|png)";

    Dass Du eine unübersichtliche Formatierungsweise für Dein Script benutzt, habe Dir die Anderen schon gesagt. Ich bevorzuge daher (insbesondere für Programmieranfänger) denn Allman-Stil. Google bitte danach oder schau bei Wikipedia. Übrigens ist das fast der Stil, den auch die PHP-Programmierer vorschreiben für ihre Projekterweiterungen.

    http://en.wikipedia.org/wiki/Indent_style

    Dann solltest Du auf jeden Fall hier im Forum nach "category:PHP $_FILES MIME" suchen, um Dich über Threads zum Thema zu informieren, die mit Sicherheit zu tun haben. Es sind, sofern ich das überschauen kann, im Moment sogar noch zwei davon im aktiven Teil des Forums. Also bitte lesen!

    Ein Absatz Wort noch zur Kontrolle, ob ein Upload stattgefunden hat.
    Die erste relevante Zeile in einem solchen Upload-Script sollte immer lauten

    if ( isset ( $_FILES[$uploadname]['error'] ))  ## Ein Uploadversuch hat stattgefunden
        {
           if ($_FILES[$uploadname]['error'] === 0)    ## genau eun File wurde ordnungsgemäß uploaded
           {
              meine_wunderbare_file_upload_funktion($target_path);
           }

    }

    Wenn man ein _oder_ mehr Files hochladen lassen will, dann wird das Ganze etwas komplexer, da PHP bei einem einzelnen Fall ein "Recors-Array" übergibt und bei mehreren Files ein "Spaltenarray".

    $_FILES[$uploadname]['error'][0]
      $_FILES[$uploadname]['tmp_name'][0]
      $_FILES[$uploadname]['name'][0]
      $_FILES[$uploadname]['size'][0]
      $_FILES[$uploadname]['type'][0]

    $_FILES[$uploadname]['error'][1]
      $_FILES[$uploadname]['tmp_name'][1]
      $_FILES[$uploadname]['name'][1]
      $_FILES[$uploadname]['size'][1]
      $_FILES[$uploadname]['type'][1]

    odr anders herum geschrieben:

    $_FILES[$uploadname]['error'][0]
      $_FILES[$uploadname]['error'][1]

    $_FILES[$uploadname]['tmp_name'][0]
      $_FILES[$uploadname]['tmp_name'][1]

    $_FILES[$uploadname]['name'][0]
      $_FILES[$uploadname]['name'][1]

    $_FILES[$uploadname]['size'][0]
      $_FILES[$uploadname]['size'][1]

    $_FILES[$uploadname]['type'][0]
      $_FILES[$uploadname]['type'][1]

    Man muss also dann erst fragen, ob

    if ( isset ( $_FILES[$uploadname]['error'] ))  ## Ein Uploadversuch hat stattgefunden
        {
           if ($_FILES[$uploadname]['error'] === 0)    ## genau eun File wurde ordnungsgemäß uploaded
           {

    $errmsg[] = meine_wunderbare_file_upload_funktion($_FILES['tmp_name], $target_path); ## [1]

    }
           if (is_array($_FILES[$uploadname]['error']))
           {
              foreach($_FILES[$uploadname]['error'] as $key => $error)
              {
                 if ($error === 0)
                 {
                     $errormsg[] = meine_wunderbare_file_upload_funktion($_FILES['tmp_name][$key], $target_path); ## [1]
                 }
              }

    }

    }

    [1] die Funktion musst Du Dir selber schreiben.
    Sie könnte auch alle Parameter aus $_FILES übernehmen, also name, tmp_name, size, type, error ...

    Viel Spaß beim Experimentieren.

    Ein harzliches Glückauf

    Tom vom Berg

    http://bergpost.annerschbarrich.de
    .

    --
    Nur selber lernen macht schlau
    1. Hello,

      siehe auch http://forum.de.selfhtml.org/archiv/2007/4/t150144/#m976320

      Ein harzliches Glückauf

      Tom vom Berg

      http://bergpost.annerschbarrich.de
      .

      --
      Nur selber lernen macht schlau