Attachment mit maximaler Grösse

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

  • Attachment mit maximaler Grösse

    Hallo Wissende!

    Ich habe schon diverse Scripte studiert und versucht es so umzusetzen, dass es auch bei mir funktioniert, aber der folgende Code versendet mein Formularinhalt immer, egal wie gross der Anhang ist.

    PHP-Code:
     # Maximale Größe des Attachments in Bytes:
     
    $max_attach_size 100000;
     
    $filesize        false;

     if (
    $_FILES['upload']['size'] > $max_attach_size)
      {
    $filesize false}
        
     
    // Wenn Attachment, dann MIME-Mail erstellen:
     
    if (isset($_FILES['upload']['name']) && 
      
    trim($_FILES['upload']['name']) != "") && ($filesize true)
       {
    //mail erstellen und versenden} 
    Es kann meiner Meinung nicht am HTML-Formular liegen, da der Versand ja funktioniert.

    Aber hier ein kleiner Auszug aus dem Form-Code:

    <form name="Kontakt" action="formmailer_upload.php" enctype="multipart/form-data" method="POST">
    <input type="file" name="upload" size="50" MaxLength="110000">

    Kann es sein, dass ich da im php-Code etwas falsch gemacht habe?

    Danke Tom
    Zuletzt geändert von torud; 14.12.2005, 14:35.
    Danke
    Tom

  • #2
    Re: Attachment mit maximaler Grösse

    Schau dir mal an, ob die Klammern bei deinem IF nicht etwas ... suboptimal gesetzt sind.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Hallo!

      Also falls Du damit meinst, dass die letzt Klammer offen ist...Das habe ich nur gemacht, weil danach noch Code kommt. Ansonsten verstehe ich leider nicht, was Du damit meinst, denn ich interpretiere, das suboptimale Setzen von Klammern nicht als Fehler, sondern als unschönen Code...

      Aber sag es mir doch bitte, wenn Du einen Fehler siehst?!
      Danke
      Tom

      Kommentar


      • #4
        PHP-Code:
         if ((isset($_FILES['upload']['name']) &&        trim($_FILES['upload']['name']) != "") && ($filesize true)) 
        Ich glaube das meint er.
        Um alle &&-Verknüpfungen muss auch eine Klammer.

        Kommentar


        • #5
          Original geschrieben von torud
          Also falls Du damit meinst, dass die letzt Klammer offen ist...
          Nein, ich meinte nicht die geschweifte, sondern die runden Klammern.
          Ansonsten verstehe ich leider nicht, was Du damit meinst, denn ich interpretiere, das suboptimale Setzen von Klammern nicht als Fehler, sondern als unschönen Code...
          Nein, "suboptimal" war in diesem Falle die freundlichere Umschreibung für "so ein Unsinn kann ja nicht das gewünschte bewirken".
          Aber sag es mir doch bitte, wenn Du einen Fehler siehst?!
          Nö, such bitte selber - dann lernst du sicher auch was für's nächste Mal, und bist dann in der Lage die Klammern bewusster zu setzen - und nicht nach Lust und Laune.

          Tipp: Wenn es dir so wirklich nicht auffällt, dann verteile dein IF mal über mehrere Zeilen, mit ordentlichen Einrückungen ...
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Danke für den Unsinn!

            Ok, ich will mich nur kurz verteidigen, weil das Problem das selbe bleibt, auch nachdem ich die gesamte Abfrage in eine ExtraKlammer gepackt habe. Ich komme eigentlich aus dem Turbo-Pascal-Bereich und da müssen nur die eigentlich Vergleiche, welche dann einen boolschen Wert ergeben in eine Klammer, aber nicht der gesamte Vergleich.

            Ok, hier muss also ein Fehler sein.

            PHP-Code:
                if (
                     isset(
            $_FILES['upload']['name']) && 
                     (
            trim($_FILES['upload']['name']) != "") &&
                          (
            $filesize true)
                   )
                 { 
            Also ich habe nun schon einige Versuche gestartet, aber es klappt einfach nicht. In Delphi muss natürlich auch die Anzahl der geöffneten Klammern, mit denen der geschlossenen übereinstimmen, aber sehe ich gerade nicht durch.

            Ganz oben und ganz unten nun eine Klammer zum Öffnen und Schliessen und zum Erhalt eines Ergebnisses. Ich weiss nun nicht, ob isset auch noch in eine Extra-Klammer muss um ein Ergebnis zu erhalten. Trim habe ich ebenso wieder in ein Klammerbettchen gelegt, da es ja hier einen Vergleich gibt, der ein Ergebnis erbringen soll und zum Schluss noch die Abfrage bezüglich true or False in einer Klammer.

            Bin ich Blind oder Blond?

            Wenns mir keiner erklärt, wird der Lerneffekt eher mager ausfallen.

            Und @jbay in Deiner Antwort ist ein kleiner Fehler. Du hast 4 Klammern geöffnet, aber 5 schliessende Klammern drin. Ich bin also nicht allein mit diesem Problem. Wie macht man´s denn nun richtig?

            Tom
            Zuletzt geändert von torud; 14.12.2005, 14:55.
            Danke
            Tom

            Kommentar


            • #7
              Stimmt, auch bei mir fehlt eine Klammer.

              Die ganze If-Klausel muss in Klammern sein und dann muss jeder einzelne Vergleich auch noch in Klammern sein.

              Also:

              PHP-Code:
              if ((isset($_FILES['upload']['name']) && (trim($_FILES['upload']['name']) != "") && ($filesize true)) 
              Das muss stimmen, wenn das nicht geht liegt der Fehler anderswo.

              Kommentar


              • #8
                Die Klammerung war nicht der einzige Fehler.


                Mit $filesize = true machst du eine Zuweisung, keinen Vergleich. Und der logische Wert einer Zuweisung ist immer gleich dem, was zugewiesen wurde - also ergibt diese Teilbedingung immer true, und dein IF-Anweisungsblock wird also immer ausgeführt.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Ok, das mit der Zuweisung habe ich nun gefressen. Das war wirklich mehr als dämlich! Ich bin mir sicher, dass man Abfragen mit einem Doppel= tätigt!?

                  PHP-Code:
                   if ((isset($_FILES['upload']['name']) && (trim($_FILES['upload']['name']) != "")) && ($filesize == true)) 
                  Leider gehts immer noch nicht. Das Script schiebt immer noch alles hoch, was es kriegt.
                  Zuletzt geändert von torud; 14.12.2005, 15:18.
                  Danke
                  Tom

                  Kommentar


                  • #10
                    Habe es nun mal so geschrieben, damit es übersichtlicher wird, aber trotzdem will es nicht werden.

                    PHP-Code:
                        if (
                           (isset(
                    $_FILES['upload']['name']) &&
                           (
                    trim($_FILES['upload']['name']) != "")) &&
                           (
                    $filesize == true)
                           ) 
                    Danke
                    Tom

                    Kommentar


                    • #11
                      PHP-Code:
                      if (
                             (isset(
                      $_FILES['upload']['name'])) &&
                             (
                      trim($_FILES['upload']['name']) != "") &&
                             (
                      $filesize == true)
                             ) 
                      So müsste es definitiv korrekt sein. Die Klammern waren immer noch falsch.

                      Kommentar


                      • #12
                        Hi,

                        PHP-Code:
                        if ($_FILES['upload']['name'] && $filesize == true
                        In Flames - Pinbal Map
                        Becoming the Archetype - No Fall Too Far
                        Pantera

                        Kommentar


                        • #13
                          Ahm... Vielleicht tuts ja auch nichts zur sache aber ich hab mich, beim versuch den code zu verstehen, gefefragt wie zum geier diese filesize-variable jemals true werden kann

                          PHP-Code:
                          $filesize        false;

                           if (
                          $_FILES['upload']['size'] > $max_attach_size)
                            {
                          $filesize false}
                          // wenn uploadsize > maxsize => false setzen
                          // wenn uploadsize < maxsize => false lassen ?!?
                              
                           
                          if (isset($_FILES['upload']['name']) &&   trim($_FILES['upload']['name']) != "") && ($filesize true)
                             {
                          //mail erstellen und versenden}
                          // aber true fordern????? 

                          Kommentar


                          • #14
                            Original geschrieben von jbay
                            dann muss jeder einzelne Vergleich auch noch in Klammern sein.
                            wer hat denn das gesagt? Oo,
                            und dein zweiter Post, wo du zwei ANDs nochmal mit einer Klammer umrandet hast ist exakt genauso sinnlos wie dein erster Reperatur-Versuch, weil alles gleich stark gebunden wird... wenn da jetzt noch ein OR drin wäre
                            PHP-Code:
                            if ($var1 AND ($var2 OR $var3)) {

                            }

                            // aber hierbei ist es so unglaublich egal
                            if ($var1 AND $var2 AND $var3) {

                            }

                            // funktioniert genauso mit Funktionsaufrufen
                            if(!empty($var1) AND $var2 == 'test' AND !isset($var3))


                            // man kann mit Klammerung auch die Lesbarkeit zerstören
                            if ( ! ( empty ( $var1 ) ) AND ( ( $var2 == 'test' ) AND ( ! ( isset ( $var3 ) ) ) ) )
                            // es ist exakt das selbe wie obiges Beispiel nur mit nem
                            //  Haufen mehr Klammern und Leerzeichen...wirklich unnötig >_> 
                            [edit]

                            und auch so ein Code:
                            PHP-Code:
                            <?php
                            error_reporting
                            (E_ALL);
                            if (isset(
                            $test) AND $test != '') {
                             echo 
                            'hier';
                            }
                            spuckt keinen Fehler aus, weil nur die erste Bedingung (isset) ausgewertet wird. Da diese falsch ist kommt er gar nicht zur anderen...
                            (Falls das dein Beweggrund für die erneute Klammerung war)

                            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                            Wie man Fragen richtig stellt

                            Kommentar


                            • #15
                              Da fliessen wohl alle anderen Programmiersprachen mit ein. Java erlaubt das nicht, wenn ich mich recht erinnere.

                              Aber der Fehler ist ja gefunden, warum so weit suchen, wenn er doch so nah liegt?

                              Kommentar

                              Lädt...
                              X