Funktion

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

  • Funktion

    Hi Leutz...

    Hab ein Prob mit meinem Bild-Upload.
    Funzt soweit super mit dem Upload und auch DB aber er läd eben alle Dateitypen hoch obwohl ich meiner Funktion durch getimagesize nach jpeg, gif und png abfrage. Und nach Dateigröße... er lässt aber alles durch, anstatt die error-message auszuspucken.

    PHP-Code:
    if($_FILES[file][tmp_name] != "")
    {
          
    $pic_info = @GetImageSize($_FILES[file][tmp_name]);
          
    $filesizebytes filesize($_FILES[file][tmp_name]);
                                
          if(
    $filesizebytes 50000 
             
    AND $pic_info['2'] !="1" 
             
    AND $pic_info['2'] !="2" 
             
    AND    $pic_info['2'] !="3")
          {
           eval(
    $func->generate_error_templat("usrmgr_form","userpic" ,"<br>Errormessage"));    
    $_GET[part] = '1';
    // if
    // if 
    Vielleicht kann mir ja jemand helfen
    Zuletzt geändert von deschmiddi; 05.03.2004, 17:57.
    Geht net gibts net...

  • #2
    hmm,

    editierst mal deinen beitrag, so daß ich nicht horizontal scrollen muß? danke.

    PHP-Code:
    if($filesizebytes 50000 AND $pic_info['2'] !="1"    AND    $pic_info['2'] !="2"    AND    $pic_info['2'] !="3"
    was steht in filesizebytes? echo ...macht mal das @ bei getimagesize weg ...

    PHP-Code:
    $pic_info['2'] !="1"    AND    $pic_info['2'] !="2"    AND    $pic_info['2'] !="3" 
    und das ist bestimmt nicht das, was du willst, oder? also, die logische verknüpfung mein ich ...

    EDIT:
    außerdem find ichs persönlicher besser, daß file erst ausm temp rauszuholen, mit is_uploaded_pfeil und move_uploaded ...
    Zuletzt geändert von derHund; 27.02.2004, 18:49.
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      na in filesizebytes steht $_FILES[file][tmp_name] drin... die datei die ich vorher in einem Formular <input type=file blabla> ausgewählt habe...

      PHP-Code:
      if($pic_info['2'] = "1")
      $datatype "jpeg"
      heißt wenns ungleich ( != ) 1 ist, dann soll er den error ausspucken oder wie hast du das verstanden.
      Das array pic_info['2'] ergibt sich aus getimagesize.

      kannst du das mit dem edit genauer beschreiben? versteh ich net so ganz

      Anmerkung: selbst wenn ich die filesize abfrage weglasse gehts net...
      Zuletzt geändert von deschmiddi; 27.02.2004, 19:05.
      Geht net gibts net...

      Kommentar


      • #4
        na in filesizebytes steht $_FILES[file][tmp_name] drin... die datei die ich vorher in einem Formular <input type=file blabla> ausgewählt habe...
        danke! du solltest den inhalt ausgeben, aber nur so btw.

        viel wichtiger:
        Anmerkung: selbst wenn ich die filesize abfrage weglasse gehts net
        und das ist bestimmt nicht das, was du willst, oder? also, die logische verknüpfung mein ich ...
        kannst du das mit dem edit genauer beschreiben? versteh ich net so ganz
        mal nen snippet, nur zum kucken ...

        PHP-Code:
                if (!is_uploaded_file ($_FILES["puzzbild"]["tmp_name"][$i1])) {
                  
        $UploadError[$i1] = ERROR_NO_UPLOADED_FILE;
                  continue;
                }
                
        $Uploaded IMAGE_UPLOAD_DIR."/".$Filename;
                if (!
        move_uploaded_file ($_FILES["puzzbild"]["tmp_name"][$i1], $Uploaded)) {
                  
        $UploadError[$i1] = ERROR_COULDNT_MOVE_FILE;
                  continue;
                }
                if ((!
        $ImageSize getImageSize($Uploaded)) || $ImageSize[2] < || $ImageSize[2] > 3) {
                  
        $UploadError[$i1] = ERROR_NO_REAL_IMAGE_FILE;
                  continue;
                } 
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar


        • #5
          hmm ich kapiers immernoch net...

          bei meiner bildergallerie die ich gebastelt hab, hats auch gefunzt... das sah mei quelltext nur eben so aus wie unten.
          Das hier ist doch das selbe in grün, nur dass ich mit einer statt mehreren bildern arbeite ???

          PHP-Code:
          //
          // Errorcheck step 2
          //
          switch($_GET[step])
          {
              
              case 
          2:
              
              foreach(
          $_POST[pic] as $key => $current_pic)
              {
                  if(
          $current_pic != "" OR $_FILES[file $key][tmp_name] != "")
                  {
                      
          $pic_info    GetImageSize($_FILES[file $key][tmp_name]);
                      
          $set        "1";

                      if(
                          (
                              !
          $current_pic    AND    $_FILES[file $key][tmp_name]
                          ) 
                          OR 
                          (
                              
          $current_pic    AND     !$_FILES[file $key][tmp_name]
                          ) 
                          OR 
                          (
                              
          $current_pic    AND    $_FILES[file $key][tmp_name]    AND 
                              
          $pic_info['2'] !="1"    AND    $pic_info['2'] !="2"    AND    $pic_info['2'] !="3"
                          
          )
                      )
                      {
                          
                          eval(
          $func->generate_error_template("picgallery_form","pic" $key,"<br>Sie m&uuml;ssen eine Beschreibung sowie ein g&uuml;ltiges Bild angeben"));
                          
          $_GET[step]    = "1";    
                          
                      } 
          // if
                      
                  
          // if
                          
              
          // foreach
              
              //
              // There aren't any pics
              //    
              
          if($set != "1")
              {
                  eval(
          $func->generate_error_template("picgallery_form","pic1","<br>Sie m&uuml;ssen mindestens ein Bild angeben"));
                  
          $_GET[step]    = "1";    
              }
                      
              break;
              
          // switch

          //
          // Form or action
          //
          switch($_GET[step])
          {
              default:
              
                  
          $templ['picgallery']['form']['control']['form_action']    = "?mod=picgallery&action=add&step=2";
                  
                  
          $templ['picgallery']['form']['control']['pic1']        = $_POST[pic][1];
                  
          $templ['picgallery']['form']['control']['pic2']        = $_POST[pic][2];
                  
          $templ['picgallery']['form']['control']['pic3']        = $_POST[pic][3];
                  
          $templ['picgallery']['form']['control']['pic4']        = $_POST[pic][4];
                  
          $templ['picgallery']['form']['control']['pic5']        = $_POST[pic][5];
                  
          $templ['picgallery']['form']['control']['pic6']        = $_POST[pic][6];
                  
          $templ['picgallery']['form']['control']['pic7']        = $_POST[pic][7];
                  
          $templ['picgallery']['form']['control']['pic8']        = $_POST[pic][8];
                  
          $templ['picgallery']['form']['control']['pic9']        = $_POST[pic][9];
                  
          $templ['picgallery']['form']['control']['pic10']    = $_POST[pic][10];
                              
                  eval(
          "\$templ['index']['info']['content'] .= \""$func->gettemplate("picgallery_form")."\";");

              break;
              
              case 
          2:
                      
                  foreach(
          $_POST[pic] as $key => $current_pic)
                  {

                      if(
          $current_pic != "" AND $_FILES[file $key][tmp_name] != "")
                      {
                          
          $pic_info    GetImageSize($_FILES[file $key][tmp_name]);
                          
          $time        time();
                          
          $random        rand("10000","99999");
                          
                          if(
          $pic_info['2'] == "1")
                          
          $datatype    "gif";
                          elseif(
          $pic_info['2'] == "2")
                          
          $datatype    "jpg";
                          elseif(
          $pic_info['2'] == "3")
                          
          $datatype    "png";
                          
                          
          $dataname    $time $random "." $datatype;
                          
          $dataname_thumb    "thumb_" $time $random "." $datatype;
                              
                          
          //
                          // Copy pic on harddisk
                          //
                          
          $move move_uploaded_file($_FILES[file $key][tmp_name], "ext_inc/picgallery/$dataname");

          if(
          $move == TRUE)
                          {
                              
          //
                              // Insert pic into database
                              //
                              
          $db->query("
                              INSERT INTO 
          {$config[tables][picgallery]}
                              SET    userid = '
          {$_SESSION[auth][userid]}', caption = '$current_pic', name='$dataname'
                              "
          );
                                  
                              
          //
                              // Add to success
                              //
                              
          if($success != "")
                              
          $success        .= ",";
                              
          $success        .= $current_pic;
                          }
                          
                      } 
          // if
                      
                  
          // foreach
                          
                  
          $func->confirmation("Die folgenden Bilder wurden erfolgreich hinzugef&uuml;gt: <b>'$success'</b>","?mod=picgallery&action=show");

              break;
              
          // switch 
          Geht net gibts net...

          Kommentar


          • #6
            Habs jetzt mal als test so probiert und festgestellt,
            dass er mir das tmp-file ausgibt, pic_info aber nicht... deshalb geht die funktion wohl auch nicht...
            worans hängt weiß ich aber trotzdem net ???

            PHP-Code:
            <?php
            switch($_GET[part])
                            {
                            case 
            1:
            ?>
            <form name="form" method="post" action="test.php?part=2" enctype="multipart/form-data">
            <table width="100%" cellspacing="0" cellpadding="0">
            <tr>
                  <td width="70%" height="30">
                    <table width="100%" cellspacing="0" cellpadding="3" class="tbl_1
                      <tr>
                        <td>
                          <div align="center">
                            Neues Bild einfügen<br>
                            <input name="file" type="file" class="form">
                            
                          </div> 
                        </td>
                      </tr>
                    </table>
                  </td>
                </tr>
                <tr class="tbl_4"> 
                  <td colspan="2" class="tbl_4"><img src="/" width="1" height="1"></td>
                </tr>
                <tr> 
                  <td class="tbl_6" height="30" width="30%">
                    <table width="100%" cellspacing="0" cellpadding="3" class="tbl_6">
                      <tr> 
                        <td width="12"><a href="javascript:var w=window.open('base.php?mod=helplet&helpletid=usrmgr/form','_blank','width=320,height=400,resizable=no');"><img src="design/standard/images/arrows_help.gif" width="12" height="13" border="0"></a></td>
                        <td><a href="javascript:var w=window.open('base.php?mod=helplet&helpletid=usrmgr/form','_blank','width=320,height=400,resizable=no');"> 
                          Hilfe </a></td>
                      </tr>
                    </table>
                  </td>
                  <td class="tbl_6" height="30" width="70%"> 
                    <table width="100%" cellspacing="0" cellpadding="3" class="tbl_6">
                      <tr> 
                        <td> 
                          <input type="image" border="0" name="imageField" src="design/standard/images/buttons_next.gif" width="61" height="17">
                        </td>
                      </tr>
                    </table>
                  </td>
                </tr>
                <tr class="tbl_4"> 
                  <td colspan="2"><img src="/" width="1" height="1"></td>
                </tr>
                <tr class="tbl_5"> 
                  <td colspan="2"> 
                    <p><br>
                    </p>
                  </td>
                </tr>
              </table>
            </form>
            <?php

                
                                
            case 2:
                                    echo 
            $_FILES[file][tmp_name];
                                    
            $pic_info getimagesize($_FILES[file][tmp_name]);
                                    echo 
            $pic_info;
                                    if(
            $_FILES[file][tmp_name] != "")
                                    {
                                        
            $pic_info getimagesize($_FILES[file][tmp_name]);
                                        
                                        if(
            $_FILES[file][tmp_name] AND $pic_info['2'] !="1" AND $pic_info['2'] !="2" AND $pic_info['2'] !="3" AND $filesizebytes 50000)
                                        {
                                            echo 
            "Sie m&uuml;ssen ein g&uuml;ltiges Bild angeben";    
                                            
            $_GET[part] = '1';
                                        } 
            // if
                                    
            // if
                                
            break;
                
                            } 
            // switch
            ?>
            Bei meinem Script obendrüber gehts komischerweise
            Zuletzt geändert von deschmiddi; 27.02.2004, 20:13.
            Geht net gibts net...

            Kommentar


            • #7
              PHP-Code:
              <?PHP 

              echo $_FILES[file][tmp_name];
                                      
              $pic_info getimagesize($_FILES[file][tmp_name]);
              echo 
              '<pre>';
                                      
              print_r($pic_info);

                                      if(
              $_FILES[file][tmp_name] != "")
                                      {
              was kommt da raus?
              Die Zeit hat ihre Kinder längst gefressen

              Kommentar


              • #8
                Bei nem BIld das hier:
                C:\WINDOWS\TEMP\php73.tmp
                Array
                (
                [0] => 640
                [1] => 480
                [2] => 2
                [3] => width="640" height="480"
                [bits] => 8
                [channels] => 3
                [mime] => image/jpeg
                )

                nehm ich dagegen keine Bilddatei,
                so spuckt er mir nur:

                C:\WINDOWS\TEMP\php75.tmp
                aus.

                Hab mal mei die foreachschleife aus meiner Bildergallerie probiert wie im post oben, da spuckt er ne Fehlermeldung aus komischerweise ???
                raff net wo der unterschied is
                Geht net gibts net...

                Kommentar


                • #9
                  hmm,

                  er ne Fehlermeldung
                  die da lautet?

                  nehm ich dagegen keine Bilddatei,
                  so spuckt er mir nur:
                  dann haste doch ne eindeutige unterscheidung. prüfst halt, ob pic_info gesetzt ist ...
                  Die Zeit hat ihre Kinder längst gefressen

                  Kommentar


                  • #10
                    Bildupload mit Dateiüberprüfung

                    Hi Leutz,
                    hab vor ner Woche schonmal gepostet zu dem Thema aber irgentwie komm ich immernoch net so ganz klar.

                    Hier erstmal mein Code, der hoffentlich net zu kompliziert ist, da ich mit templates arbeite

                    PHP-Code:

                    function error_add_form_step1() {
                      
                    $get_userpic        $this->image_check();
                      if(
                    $get_userpic == FALSE
                      {
                          echo 
                    "ungültiges Dateiformat"// Vereinfacht dargestellt
                      
                    }
                    }

                    function 
                    image_check() {
                      switch(
                    $_GET[part])
                      {
                        case 
                    2:
                        if(
                    $_FILES[file][tmp_name] != "")
                        {
                          
                    $pic_info getimagesize($_FILES[file][tmp_name]);
                                      if(
                    $pic_info["2"] != "1" 
                                        
                    AND
                                        
                    $pic_info["2"] != "2"
                                        
                    AND
                                        
                    $pic_info["2"] != "3"){

                                          
                    $_GET[part] = "1";
                                          return 
                    FALSE;
                                      }
                                     }
                       break;
                       
                    //
                       // Form or action
                       //
                                
                       
                    default:
                                                
                        
                    Hier wird im Fehlerfall mein Formular wieder ausgegeben.
                                    
                    Und die oben erzeugte Fehlermeldung auch.
                        
                    Funktioniert auch soweit.    
                                                
                       break;
                            
                      } 
                    // switch 
                    }

                    function 
                    change_data() 
                    {
                      switch(
                    $_GET[part])
                      {
                        case 
                    2:
                                    
                        if(
                    $_FILES[file][tmp_name] != ""
                        {
                        
                    $pic_info getimagesize($_FILES[file][tmp_name]);
                        
                    $time        time();
                        
                    $random        rand("10000","99999");
                                    
                        if(
                    $pic_info['2'] == "1")
                        
                    $datatype    "gif";
                        elseif(
                    $pic_info['2'] == "2")
                        
                    $datatype    "jpg";
                        elseif(
                    $pic_info['2'] == "3")
                        
                    $datatype    "png";
                                    
                        
                    $dataname    $time $random "." $datatype;
                                        
                        
                    //
                        // Copy pic on harddisk
                        //
                        
                    $move move_uploaded_file($_FILES[file][tmp_name], "ext_inc/userpics/$dataname");
                                    
                        if(
                    $move == TRUE)
                        {
                          
                    //
                          // Insert pic into database
                          //
                          
                    $move2 $db->query("
                          UPDATE 
                              
                    {$GLOBALS["config"]["tables"]["user"]} 
                          SET 
                              userpic         ='
                    $dataname'
                          WHERE 
                              userid     = '
                    $this->userid'
                          "
                    );
                        } 
                    // if

                        
                    $change_it $db->query("
                                    UPDATE 
                                        
                    {$GLOBALS["config"]["tables"]["user"]} 
                                    SET
                            username    = '
                    $this->username',
                            type        = '
                    $this->type',
                            school        = '
                    $this->school',
                                                
                            firstname    = '
                    $this->firstname',
                            name         = '
                    $this->name',
                            tag        = '
                    $this->tag',
                            monat         = '
                    $this->monat',
                            jahr        = '
                    $this->jahr',
                                                
                            street        = '
                    $this->street',
                            city        = '
                    $this->city',
                            plz        = '
                    $this->plz',
                                                
                            handy        = '
                    $this->handy',
                            email        = '
                    $this->email',
                            icq        = '
                    $this->icq',
                            url        = '
                    $this->url'
                                                
                        WHERE 
                                        userid                     = '
                    $this->userid'
                        "
                    );

                        if(
                    $move2 == TRUE && $change_it == TRUE
                        {
                          
                    Mssage Daten geändert +Bild hochgeladen
                          
                    return TRUE
                        }
                                    else 
                        {     
                          
                    Hier message Datenbankfehler    
                          
                    return FALSE
                        }
                                    } 
                    // IF
                                                
                        
                    else
                        {
                           
                    $change_it $db->query("
                                       UPDATE 
                                           
                    {$GLOBALS["config"]["tables"]["user"]} 
                                       SET
                                username    = '
                    $this->username',
                                type        = '
                    $this->type',
                                school        = '
                    $this->school',
                                                
                                firstname    = '
                    $this->firstname',
                                name         = '
                    $this->name',
                                tag            = '
                    $this->tag',
                                monat         = '
                    $this->monat',
                                jahr        = '
                    $this->jahr',
                                                
                                street        = '
                    $this->street',
                                city        = '
                    $this->city',
                                plz        = '
                    $this->plz',
                                                
                                handy        = '
                    $this->handy',
                                email        = '
                    $this->email',
                                icq            = '
                    $this->icq',
                                url            = '
                    $this->url'
                                                
                            WHERE 
                                            userid     = '
                    $this->userid'
                            "
                    );
                                                    
                            if(
                    $change_it == TRUE
                            {
                                
                    Message nur Daten geändert erfolgreich
                                
                    return TRUE
                            } 
                            else 
                            {     
                                
                    Message Fehler
                                
                    return FALSE;
                            }
                                   } 
                    // else
                        
                    //switch} 
                    }// function - change form 
                    Mein Problem:
                    Habe ein Formular das normale Textfelder und ein File-Feld beinhaltet.
                    Ich hätte mein script gern so dass wenn das File-feld leer ist, er nur die Daten ändert.
                    Ist das File-Feld nicht leer, so soll geprüft werden ob es sich um eine Bild-datei(jpeg, gif, png) handelt oder nicht.
                    Kein Bild: Formular neu laden mit errormessage.
                    Bild: Daten eintragen + Bild uploaden.

                    Der fehler liegt irgentwo in der if-schachtelung bzw den switches oder $_FILES[file][tmp_name] ist immer leer.

                    Die jetzige Ausgabe des Scriptes: egal ob file-feld leer, oder gefüllt, ob Bild oder nicht Bild, er läd immer wieder das formular und zeigt unten die error-message an.

                    Hoffentlich kann mir jemand helfen, denn ich bin schier am verzweifeln.
                    MFG deschmiddi
                    Geht net gibts net...

                    Kommentar


                    • #11
                      Re: Bildupload mit Dateiüberprüfung

                      Original geschrieben von deschmiddi
                      hab vor ner Woche schonmal gepostet
                      und warum verflixt nochmal hast du dann in dem alten thread auf die nachfragen von demHund nicht mehr reagiert ...?
                      stattdessen machst du jetzt einen neuen thread auf ...

                      lass das bitte zukünftig!

                      *seufz* *zusammenführ*
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        Tschuldigung...

                        hab versucht die Antwort von derHund in die tat umzusetzen aber hab halt jetzt gemerkt dass das net so funzt, deshalb hab ich gleich den neuesten code gepostet.

                        Aber statt darüber zu simulieren, wie wärs stattdessen mit produktiven vorschlägen?
                        Wäre euch echt sehr dankbar.

                        hoffentlich kann mir jemand helfen
                        Geht net gibts net...

                        Kommentar

                        Lädt...
                        X