Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Problem mit String-"Bearbeitung"

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Problem mit String-"Bearbeitung"

    Guten Abend,

    ich sitze jetzt seit einigen Stunden an einen Problem, und finde einfach keien passende Lösung oder ich habe grundsätzlich etwas falsch gemacht und deswegen nicht.

    Situation:

    Ich habe ein kleines Upload-Skript (für Bilder) => funktioniert auch an für sich. Nach dem Upload soll dann die Breite des Bildes ermittelt werden. An und für sich ist das recht einfach mit getimagesize() zu machen => Mit manuellen Eingaben von Dateinamen im Quellttext hat es zumindest geklappt.

    Allerdings wird mein Upload-Skript via. Funktion genutzt, da es noch an einen anderen Ort benötigt wird. Aus diesem Grund möchte ich diese auch nicht weiter umbauen

    Nach dem Abschluss des eigentlichen Uploads bekomme ich eine Erfolgssmeldung, in welcher der Dateiname enthalten ist:

    Die Datei "16908597653011400962317.jpg" wurde erfolgreich hochgeladen.
    Mein Problem liegt also genau hierbei (beim zerlegen dieses Satzes):

    Als erstes die Ausgabe des von mir erzeugten Strings via. var_dump():
    string(87) "../images/1342090939571400963012.jpg"
    Hier einmal ein Vergleich zu der var_dump Ausgabe, wo ich den Dateiname manuell in Quelltext eingetragen habe und es funktioniert:

    string(47) "../images/79933469672091400961570.jpg"

    Jetzt einmal noch einen Auszug von meinen Quelltext:

    PHP-Code:

    // Ausgabemitteilung des Strings teilen
    $zerlegeString str_replace'Die Datei "' '' $FUNCTION_RUECKGABE );
    $zerlegeString str_replace'" wurde erfolgreich hochgeladen.' '' $zerlegeString );
    $newStringName str_replace(" ","",$zerlegeString);

    var_dump($file); 
    Alleine die Tatsache, dass 87 Zeichen im String vorkommen ist schon seltsamt aber gut


    Meine bisherige Problembehebung:

    str_replace mit \r oder \n oder \r\n oder suche nach ' ' und ersetze mit '' oder mit der Funktion trim() ... Es hat leider nichts funktioniert.

    Es wäre sehr nett, wenn mir jemand mit diesem Problem helfen kann.


    Lg

  • #2
    Du baust doch den String "Die Datei "16908597653011400962317.jpg" wurde erfolgreich hochgeladen. " irgendwo. Wieso speicherst du dir den Dateinamen nicht irgendwo zwischen, anstatt den gebauten String wieder auseinander zu reißen?

    Kommentar


    • #3
      In einer Funktion einen Meldungsstring zurückzugeben halte ich allgemein für ein bisschen uneffektiv und unflexibel (wie du ja gerade erlebst^^).
      Gibt doch lieber nur den Dateinamen zurück und generiere deine Meldung bei Bedarf einfach nach dem Funktionsaufruf aus der Rückgabe.

      Wenn dus weiter so handhaben willst wie bisher könnte ein einfacher regulrärer Ausdruck eine Lösung sein,
      sähe in etwa so aus:

      PHP-Code:
      preg_replace('/(.*)"(.*?)"(.*)/''$2'$FUNCTION_RUECKGABE); 
      Nagel mich nicht drauf fest, reguläre Ausdrücke und ich sind nicht die besten Kumpels

      Grüße
      ?!? Woot Woot...

      Kommentar


      • #4
        Guten Morgen,

        ok ich habe das Problem jetzt gelöst mehr oder weniger mit dem Rat von euch beiden

        1. Den Dateiname irgendwo speichern.
        2. Meldung aus Ausgabe aus der Funktion sind uneffektiv
        Gut also gelöst dann nun:

        1. Der Dateiname wird über die Funktion mit herausgegeben.
        2. Die Meldung selber wird auch mit ausgegeben

        Habe in der Funktion als Ausgabe einfach ein Array erstellt und greife nun auf die Meldung oder den Dateiname zu.

        Falls jemand anders mal ein ähnliches Problem oder so hat hier mal ein kurzer Code:

        PHP-Code:

        // Geänderter Bereich aus der Ausgabefunktion:

        $array_FUNCTION_RUECKGABE = array( 'meldung' => $FUNCTION_RUECKGABE 'fileName' => $NEWfileName );
        return 
        $array_FUNCTION_RUECKGABE;

        // Ausgabe-PHP-Datei
        $FUNCTION_RUECKGABE uploadSKRIPT()
        var_dump($FUNCTION_RUECKGABE); 
        Und hier dann die Ausgabe von var_dump()

        array(2) { ["meldung"]=> string(12 "
        Die Datei "5651764304320_____1400993412.jpg" wurde erfolgreich hochgeladen.
        " ["fileName"]=> string(32) "5651764304320_____1400993412.jpg" }

        Lg

        Kommentar


        • #5
          Den Sinn, eine Funktion eine Fertigmeldung zurückzugeben lassen, habe ich trotzdem immernoch nicht verstanden. Das sollte nicht Aufgabe der Funktion sein. Es würde nur Sinn machen, wenn die Funktion etwas validiert und entsprechend verschiedene Error- oder Erfolgsnachrichten zurückgibt. So finde ich, macht das ganze wenig Sinn.

          Kommentar


          • #6

            Es würde nur Sinn machen, wenn die Funktion etwas validiert und entsprechend verschiedene Error- oder Erfolgsnachrichten zurückgibt.
            Also ich glaube schon das meine Funktion Sinn macht, ich poste diese einfach mal. Da ich selber gerade beim Lernen mit PHP etc. bin, bin ich natürlich auch über Tipps dankbar. Wobei wenn ich dich richtig verstehe, macht diese Ausgabe gewissen Sinn.

            function Upload()

            PHP-Code:

            function uploadSKRIPT($FILES,$maxFiles,$maxFileSize_MB,$maxFileSize_Byte,$DRoot,$array_upload_file_types,$array_upload_file_ends,$umbenennen){

                
            /*                     $_FILES - INHALTE
                                      [name]         => ''
                                      [type]         => ''
                                      [tmp_name]     => ''
                                        [error]         => ''
                                      [size]         => 0          # Angabe in Bytes
                */

                // Schleife beginnen damit alle Dateien hintereinander hochgeladen werden können

                
            $FUNCTION_RUECKGABE "";

                if( 
                    (
            $FILES === "") || 
                    ( empty(
            $maxFiles) ) || 
                    ( empty(
            $maxFileSize_MB) ) || 
                    ( empty(
            $maxFileSize_Byte) ) || 
                    ( !
            is_numeric($maxFiles) ) || 
                    ( !
            is_numeric($maxFileSize_MB) ) || 
                    ( !
            is_numeric($maxFileSize_Byte) )
                ){

                    
            $msg="Es ist ein Problem aufgetreten. Der Upload wurde abgebrochen.";
                    
            $FUNCTION_RUECKGABE .= msgNOTOK($msg);

                }else{

                    
            // Definieren der Arrays ( Mimetypen u. Dateiendungen )

                    #$array_upload_file_ends=array('pdf'=>true,'gif'=>true,'jpg'=>true,'ico'=>true,'png'=>true,'zip'=>true,'sh'=>true,'php'=>true,'xml'=>true,'html'=>true,'gz'=>true,'bz'=>true,'7z'=>true,'tar'=>true);
                    #$array_upload_file_types=array('application/pdf'=>true,'image/gif'=>true,'image/jpeg'=>true,'image/x-icon'=>true,'image/png'=>true,'application/zip'=>true,'application/x-zip-compressed'=>true,'application/x-sh'=>true,'application/x-httpd-php'=>true,'application/xml'=>true,'application/xhtml+xml'=>true,'application/gzip'=>true,'application/bzip'=>true,'application/x-7z-compressed'=>true,'application/x-httpd-php'=>true,'application/x-tar'=>true,'application/octet-stream'=>true);

                    
            $c=0;
                
                    for( 
            $c=$c <= $maxFiles $c++ ){

                        if( isset(
            $FILES['file']['name'][$c]) && !empty($FILES['file']['name'][$c]) ){        

                            
            // neue Variablen deklarieren

                            
            $fileNameOld=$FILES['file']['name'][$c];
                
                              
            $arr_Search=array( 'ü','Ü','oe','Oe','ä','Ä',' ','#','&','!','?','+' );
                              
            $arr_Replace=array( 'ue','Ue','oe','Oe','ae','Ae','_','_','_','_','_','_' );

                            
            $fileName=str_replace($arr_Search$arr_Replace,$fileNameOld);
                
                            
            $fileType=$FILES['file']['type'][$c];
                            
            $fileSize=$FILES['file']['size'][$c];
                            
            $fileTemp=$FILES['file']['tmp_name'][$c];

                            
            $dir $_POST['dir'];

                            
            // Variablen ĂĽberprüfen
                            
            $DateiEndung substrstrrchr$fileName '.' ) , );


                              if ( @!
            $array_upload_file_types[$fileType] ){

                                
            $msg="Type:Die hochzuladende Datei ist nicht erlaubt!";
                                
            $FUNCTION_RUECKGABE .= msgNOTOK($msg);

                            }elseif ( @!
            $array_upload_file_ends[$DateiEndung] ){
                                
            $msg="Endung: Die hochzuladende Datei ist nicht erlaubt! ... ".$DateiEndung;
                                
            $FUNCTION_RUECKGABE .= msgNOTOK($msg);

                            }elseif( 
            $fileSize $maxFileSize_Byte ){

                                
            $msg="Die Datei ist zu gross. Es ist eine maximale Gr&ouml;sse von ".$maxFileSize_MB."MB erlaubt";
                                
            $FUNCTION_RUECKGABE .= msgNOTOK($msg);

                            }else{

                                
            # ggfls umbennen der Datei
                                
            if ( $umbenennen == "1" ){
                                
                                    function 
            make_randomFileName(){

                                            
            // Einen neuen Dateinamen generieren
                                            
            $randomNumber_1 mt_rand895441 8293045789245 );
                                            
            $str_shuffle str_shuffle($randomNumber_1);
                                            return 
            $str_shuffle;

                                    }

                                    
            $str_shuffle make_randomFileName();
                                    
            $NEWfileName $str_shuffle."_____".time().".".$DateiEndung;


                                }else{
                                
                                    
            $NEWfileName $fileName;                
                                
                                }


                                
            # Datei-Upload

                                
            move_uploaded_file($fileTemp$DRoot.$dir.$NEWfileName);

                                
            # Datei-Rechte anpassen

                                
            chmod($DRoot.$dir.$NEWfileName,0777);

                                
            # Ausgabe Erfolgsmeldung

                                
            $msg="Die Datei &quot;".$NEWfileName."&quot; wurde erfolgreich hochgeladen.";
                                
            $FUNCTION_RUECKGABE .= msgOK($msg);

                            }
                        
                        }else{

                            
            "";

                        }
                    }
                }

            $array_FUNCTION_RUECKGABE = array( 'meldung' => $FUNCTION_RUECKGABE 'fileName' => $NEWfileName );
            return 
            $array_FUNCTION_RUECKGABE;

            // #ENDE DER FUNKTION 

            Lg

            Kommentar

            Lädt...
            X