frage - keine ahnung wie ichs benennen soll

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • frage - keine ahnung wie ichs benennen soll

    hallo ich hoffe ihr könnt mir weiterhelfen. ich habe den folgenden code in meinem file_uploade script, der auch so funktioniert. erst wird die function check_size durchlaufen, wenn alles o.k. dann der datei typ und wenn auch o.k. werden die datein ins angesagte verzeichnis geladen. wenn z.b. die file grösse zu gross ist, soll das script abgebrochen werden.

    PHP-Code:
    for ($i 0$i <= 7; ++$i)
    {
        
    check_size($_FILES['foto_d']['size'][$i]);
    }

    for (
    $i 0$i <= 7; ++$i)
    {
        
    check_tipo($_FILES['foto_d']['name'][$i]);
    }

    for (
    $i 0$i <= 7; ++$i)
    {
        
    move_uploaded_file($_FILES['foto_d']['tmp_name'][$i], $uploaddir $_FILES['foto_d']['name'][$i]);

    jetzt dachte ich, dass man es auch so machen könnte, weil für mein verständnis eine sache nach der anderen abgearbeitet wird, aber dem ist nicht so.

    PHP-Code:
    for ($i 0$i <= 7; ++$i)
    {
        
    check_size($_FILES['foto_d']['size'][$i]);

        
    check_tipo($_FILES['foto_d']['name'][$i]);

        
    move_uploaded_file($_FILES['foto_d']['tmp_name'][$i], $uploaddir $_FILES['foto_d']['name'][$i]);

    habt ihr einen tip für mich. hab schon mal versucht, nach jedem functions aufruf einen break zu setzen, hat aber auch nichts gebracht

  • #2
    was machen denn die Funktionen?
    if(check_tipo($_FILES['foto_d']['name'][$i]) && check_size($_FILES['foto_d']['size'][$i])){
    move_uploaded_file($_FILES['foto_d']['tmp_name'][$i], $uploaddir . $_FILES['foto_d']['name'][$i]);

    }
    wäre wohl das richtige
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      funktioniert auch nicht. muss wohl eher an den funktionen rumbasteln, sind praktisch meine ersten. in der einen wird die max size überprüft und in der anderen nach verbotenen dateiendungen abgefragt.

      Kommentar


      • #4
        welchen rückgabewert haben deine funktionen?
        Beantworte nie Threads mit mehr als 15 followups...
        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

        Kommentar


        • #5
          in der einen wird die max size überprüft und in der anderen nach verbotenen dateiendungen abgefragt.
          Dann bau doch in deine Grössenprüfung ein if/else Kontrukt ein und frage die Grösse ab. Ist das File zu gross gibst du mittels return false; einen Rückgabewert.
          PHP-Code:
          if(check_size($_FILES['foto_d']['size'][$i]) === false){
              die(
          'Das File ist zu gross für den Upload');
          }
          //Rest des Codes 
          Gruss

          tobi
          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar


          • #6
            die ist meist eine schlechte Lösung

            Alternative wäre
            PHP-Code:
            if(check_size($_FILES['foto_d']['size'][$i]) === false){
                echo (
            'Das File ist zu gross für den Upload');
                continue;  
            #dann wird die Schleife mit dem nächsten Zähler fortgesetzt

            Die zehn Gebote sind deswegen so kurz und logisch, weil sie ohne Mitwirkung von Juristen zustande gekommen sind. (Charles de Gaulle)

            Kommentar


            • #7
              @thommyk:

              bringt in meinem fall nichts, da ich gerade verhindern will, dass überhaupt ein file hochgeladen wird, wenn eines dabei ist dass die grösse überschreitet oder nicht dem zugelassenen dateityp entspricht, da das ganze mit einträgen in eine datenbank enden soll.

              @all habe jetzt meine funktionen dank jahlives inspiration so gestaltet, dass sie bei fehler false zurückgeben und das script dann so umgeändert:

              PHP-Code:
              for ($i 0$i <= 7; ++$i)
              {
                  if(
              check_size($_FILES['foto_d']['size'][$i]) === false)
                  {
                      die(
              'El tamaño del archivo supera el limite permitido');
                  }
                  elseif(
              check_tipo($_FILES['foto_d']['name'][$i]) === false)
                  {
                      die(
              'El typo de archivo no es permitido, solo se admiten archivos del formato .jpg o .gif');
                  }
                  else
                  {
                      
              move_uploaded_file($_FILES['foto_d']['tmp_name'][$i], $uploaddir $_FILES['foto_d']['name'][$i]);
                  }

              Kommentar


              • #8
                continue heisst nicht, dass dann in der Schleife weitergemacht wird, sondern, dass die Schleife an dieser Stelle abgebrochen wird und das nächste $i drankommt.

                Du willst doch 8 Dateien hochladen, oder?. Wenn jetzt die 3. zu gross ist, wird mit die() abgebrochen und der Rest wird nicht mehr hochgeladen.
                Machst Du statt die() continue;, dann werden die restlichen trotzdem hochgeladen.
                Die zehn Gebote sind deswegen so kurz und logisch, weil sie ohne Mitwirkung von Juristen zustande gekommen sind. (Charles de Gaulle)

                Kommentar


                • #9
                  ne, ich will, dass wenn auch nur eine datei nicht dem schema entspricht, garnichts hochgeladen wird, da die dateinamen gleichzeitig noch in eine datenbank eingetragen werden, also entweder alle oder garkeines.

                  habe aber festgestellt, dass die vorhergenannte variante auch nicht bringt wass ich will, d.h. es werden nur die rausgefiltert die nicht dem schema entsprechen.

                  muss es doch so machen:
                  PHP-Code:
                  for ($i 0$i <= 7; ++$i)
                  {
                      if(
                  check_size($_FILES['foto_d']['size'][$i]) === false)
                      {
                          die(
                  'El tamaño del archivo supera el limite permitido');
                      }
                  }

                  for (
                  $i 0$i <= 7; ++$i)
                  {
                      if(
                  check_tipo($_FILES['foto_d']['name'][$i]) === false)
                      {
                          die(
                  'El typo de archivo no es permitido, solo se admiten archivos del formato .jpg o .gif');
                      }
                      
                  }    
                      
                  for (
                  $i 0$i <= 7; ++$i)
                  {
                       
                  move_uploaded_file($_FILES['foto_d']['tmp_name'][$i], $uploaddir $_FILES['foto_d']['name'][$i]);
                      

                  Kommentar

                  Lädt...
                  X