Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP nummerierte dateinamen, umlaute

Einklappen

Neue Werbung 2019

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

  • PHP nummerierte dateinamen, umlaute

    Hallo

    Ich habe bereits überall gesucht,
    und kann nichts passendes finden.


    Per formular bekomme ich diverse Usereingaben,
    diese setze ich per imagestring, imagepng auf ein bild,
    und speichere dieses in einem Ordner.

    Danach soll der User einen Link bekommen zu dem bild.
    mit vorschau ansicht.


    1. Nun möchte ich das wenn es das bild speichert,
    eine fortlaufende nummer in den namen setzt.

    2. wenn in den usereingaben umlaute ( ö ä ü ) vorkommen,
    sind auf dem bild komische zeichen. utf-8 problem ?

    3. wie mache ich das mit dem link ? das der user einen link bekommt mit seinem generierten bild ?



    Gruss und Danke.

  • #2
    Zitat von cr0co Beitrag anzeigen
    Ich habe bereits überall gesucht,
    und kann nichts passendes finden.
    Na mehr als überall können wir auch nicht schauen...

    Zu den Fragen:
    1. Du merkst dir einfach irgendwo (Datei/Datenbank) die aktuelle Zahl. Oder du verwendest uniqid() wenn sie nicht durchlaufend, sondern nur einmalig sein muss.
    2. Schwer zu sagen, ohne Code oder (wesentlich) mehr Information.
    3. HTML kannst du? Wenn du das Bild allerdings direkt mit PHP ausgibst, also einen Image MIME-Type schickst, gar nicht.

    Kommentar


    • #3
      1. was meinst du damit ? die zahl sollte fortlaufend sein. geo001_usereingabe.png geo002_usereingabe.png
      evtl. sogar 7 stellig also geo0000001_usereingabe.png

      2. unten findest du den code


      PHP-Code:

      <?php


          header
      ("Content-type:image/png");  



          
      $geoName $_POST['geoName']; 
          
          
      $ftf $_POST['ftf'];
          
      $stf $_POST['stf']; 
          
      $ttf $_POST['ttf'];
       

             
          
      $im     imagecreatefrompng("sigs/sig001.png");
          
      $orange imagecolorallocate($im22021060);
         
      //  $px     = (imagesx($im) - 20 * strlen($userEingabe)) / 2;
         
      $imgsave "/var/www/vhosts/XXX.com/httpdocs/php/userimages/geo_$geoName.png";


          
      imagestring($im2055"FTF " $ftf$orange);
          
      imagestring($im20530"STF " $stf$orange);
          
      imagestring($im20555"TTF " $ttf$orange);
          
      imagepng($im$imgsave);
          
      imagepng($im);
          
      imagedestroy($im);

      ?>

      das Bild sollte dann geo###_$geoName.png heissen.

      Kommentar


      • #4
        Wie Tropi schon gesagt hat:

        1. Zähler merken
        2. Zähler bei jedem Speichervorgang um eins erhöhen
        3. Anzahl der Stellen mit 0 aufgefüllt bspw. über sprintf('%07d', $zaehler) setzen.

        PHP-Code:
        // Zähler aus Datei
        $iCounter = (integer)file_get_contents'counterfile.txt' );

        // Zähler erhöhen
        $iCounter++;

        // Dateinamen generieren:
        $sFileName sprintf'geo%07d_usereingabe.png'$iCounter );

        // Zähler wieder merken:
        file_put_contents'counterfile.txt'$iCounter ); 
        Competence-Center -> Enjoy the Informatrix
        PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

        Kommentar


        • #5
          There, I fixed it
          PHP-Code:
          $sFileName sprintf'geo%07d_usereingabe.png'$iCounter ); 
          Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

          Kommentar


          • #6
            Oha... Ja öhm, war ne Denkaufgabe...
            Competence-Center -> Enjoy the Informatrix
            PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

            Kommentar


            • #7
              ich stehe glaub auf dem schlauch..

              // Zähler aus Datei ?

              muss ich in die counterfile.txt etwas hineinschreiben?

              Kommentar


              • #8
                Von alleine kommt jedenfalls nix neues da rein...
                Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                Kommentar


                • #9
                  leider wird die datei nur als geo0000002_usereingabe.png abgespeichert. jedesmal.

                  ich habe einfach eine 1 in die counterfile.txt geschrieben ?

                  könnte man das noch ändern auf geo0000002_$geoName.png (sodass der input verwendet wird?)

                  Kommentar


                  • #10
                    Arne hat seinen Post bearbeitet.. schaue es dir nochmal an und versuch zumindest zu verstehen, was dort passiert.
                    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                    Kommentar


                    • #11
                      Versuche ich, jedoch bin ich kein PHP Guru

                      ich bekomme einen error im error_log;

                      PHP Warning: file_put_contents(counterfile.txt) [<a href='function.file-put-contents'>function.file-put-contents</a>]: failed to open stream: Permission denied in /var/www/vhosts/XXX.cpm/httpdocs/php/action.php on line 34, referer: http://XXX.com/php/
                      habe den Ordner php auf chmod 755
                      muss ich noch etwas beachten ?

                      //EDIT:
                      Musste den Ordner auf chmod 777 setzen, jetzt funktionierts. Super !
                      Wie bringe ich es jetzt dazu den input von $geoName zu nehmen ?

                      Habe das versucht:
                      // Dateinamen generieren:
                      $sFileName = sprintf( 'geo%07d_' . '$geoName.png', $iCounter );
                      ohne erfolg. es kommt nur geo0000001_$geoName.png

                      Kommentar


                      • #12
                        Strings in Single-Quotes werden nicht geparst und damit als Text übernommen.
                        Du mußt das korrekt konkatinieren, bspw. so:
                        PHP-Code:
                        $sFileName sprintf'geo%07d_' $geoName '.png'$iCounter ); 
                        Competence-Center -> Enjoy the Informatrix
                        PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                        Kommentar


                        • #13
                          cr0co, da fehlt noch einiges an Grundlagen (klick mich)
                          Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                          Kommentar


                          • #14
                            Zitat von Arne Drews Beitrag anzeigen
                            Strings in Single-Quotes werden nicht geparst und damit als Text übernommen.
                            Du mußt das korrekt konkatinieren, bspw. so:
                            PHP-Code:
                            $sFileName sprintf'geo%07d_' $geoName '.png'$iCounter ); 
                            Vielen Dank so klappts.


                            Vielen Dank Istegelitz für den Link,
                            werde mich da mal durchlesen.

                            eine fragen habe ich noch

                            ich habe eine db.php (verbindung und eintragung in die datenbank)
                            klappt soweit.

                            Nur frage ich mich wie ich den Bildpfad eintragen kann.
                            kann ich mir einfach eine
                            PHP-Code:
                            $bildpfad = /var/www/vhosts/XX.com/httpdocs/php/userimages/$sFileName 
                            machen ?

                            Kommentar


                            • #15
                              Kann man machen... Aber dazu findest Du nun wirklich alles in dem Link von Istegelitz!
                              Competence-Center -> Enjoy the Informatrix
                              PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                              Kommentar

                              Lädt...
                              X