Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] PHP Script & Zeit

Einklappen

Neue Werbung 2019

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

  • [Erledigt] PHP Script & Zeit

    Hallo Leute,

    folgendes Problem, ich möchte in PHP ein Script schreiben das eine .jpg Datei nach 60 Sekunden löscht.

    Ich habs mit sleep(); probiert aber das hat nicht funktioniert.

    Auf cron hab ich kein Zugriff, was gibt es für andere Möglichkeiten?

    Vielen Danke im Voraus.

  • #2
    In welchem Zusammenhang denn? Wenn nicht irgendwer das Script aufruft - gar keine.

    Kommentar


    • #3
      Also dieses Script soll eine captcha.jpg Datei nach 60 Sekunden löschen. Die captcha soll nur 60 Sekunden lang gelten.

      Kommentar


      • #4
        Wieso dann überhaupt speichern? Erzeugen und ausgeben!

        Kommentar


        • #5
          Das mit dem ausgeben hab ich nicht ganz verstanden. Momentan hab ich ein captcha script das auf der gleichen seite ist wie mein formular. Wenn ich die captcha gleich ausgebe, wie platziere ich die im formular ?

          Kommentar


          • #6
            Woher soll ich Dein Script kennen?

            Kommentar


            • #7
              gute frage, hier eine gute antwort:
              No description - PHP Paste

              Kommentar


              • #8
                imagejpeg() creates a JPEG file from the given image.

                Parameters


                image
                An image resource, returned by one of the image creation functions, such as imagecreatetruecolor().

                filename
                The path to the saved file. If not set or NULL, the raw image stream will be outputed directly.

                To skip this argument in order to provide the quality parameter, use NULL.

                Kommentar


                • #9
                  Wie Nikosch bereits sagte, das Bild direkt ausgeben. Ich würde hier aber anraten, den Captcha-Code auf ne eigene PHP Datei auszulagern und dann via:
                  Code:
                  <img src="/captcha.php" alt="captcha" >
                  einzubinden. Andernfals kommt das Bild an erster stelle, weil du vor der Ausgabe des Captchas nichts an den Browser senden darfst!

                  Kommentar


                  • #10
                    und wenn du das alles net willst, nimmste javascript!

                    Grüße,

                    Kommentar


                    • #11
                      es ist nicht nötig das bild auf dem webserver zu speichern:

                      Code:
                      <img src='./captcha.php'>
                      verlinkt ein php dokument als grafik. jetzt denkst du dir: WTF LOLOLOL WIE GEHT DAS?!?!?!
                      was du begreifen musst, ist, dass php nicht gezwungen ist text auszugeben! php kann auch binärdaten ausgeben wobei zu beachten ist, dass text im endeffekt auch nur binärdaten sind.

                      du hast glück, dass ich da was fertiges hab (captcha.php):

                      PHP-Code:
                      <?php

                      session_start
                      (); // session erstellen

                      function imagegrid($image$w$h$s$color// diese funktion macht einfach nen raster über das bild drüber
                          
                      {
                          for(
                      $iw=1$iw<$w/$s$iw++){imageline($image$iw*$s0$iw*$s$w$color);}
                          for(
                      $ih=1$ih<$h/$s$ih++){imageline($image0$ih*$s$w$ih*$s$color);}
                          }

                      $fontfiles = array( // array mit den schriftdateien
                          
                      'aero_ho.ttf',
                      );

                      $text ''// der captcha text der später angezeigt wird
                      $textlen 4// wie lang der captcha werden soll
                      $fontsize 24// schriftgröße des captchas
                      $fontfile './fontfiles/'.$fontfiles[mt_rand(0count($fontfiles)-1)]; // hier wird nach dem zufallsprinzip ein element aus dem array $fontfiles rausgesucht. vorrangestellt wird noch    './fontfiles/'   so das am ende so etwas wie     ./fontfiles/aero_ho.ttf     dabei raus kommt. heißt im klartext das die schriftdatei     aero_ho.ttf     im verzeichniss    fontfiles     benutzt wurd
                      $randomlines mt_rand(1216); // anzahl der linien die kreuz und quer über das bild gezeichnet werden (in diesem fall 12 - 16 linien)

                      while(true// while(true) erzeugt eine endlosschleife die innerhalb der schleife abgebrochen werden muss oder das programm hängt sich auf
                          
                      {
                          
                      $rand mt_rand(65122); // siehe hierzu die ASCII TABLE (protip: google), da stehen die zahlen zu den buchstaben drinne
                          
                      if($rand 90 && $rand 97// hier werden bestimmte zeichen ausgeschlossen (siehe wieder ASCII TABLE)
                              
                      { continue; } // continue sorgt dafür das die schleife hier abgebrochen wird und von vorne anfäng (ganz einfach weil ein zeichen ausgewällt wurde was wir nicht als captcah zeichen haben wollen)
                          
                      $text .= chr($rand); // hier wird aus der zahl ein buchstabe gemacht und dieser der variable $text hinten ran gehängt
                          
                      if(strlen($text) >= $textlen// wenn die gewünschte textlänge erreicht ist...
                              
                      { break; } // ... dann breche die schleife ab (thema endlosschleife)
                          
                      // end while

                      $text strtoupper($text); // alle zeichen werden in großbuchstaben umgewandelt (optional --> kommt auch immer auf die schriftdatei an -  manche kenne z.b. nur großbuchstaben da könnte der user kleinbuchstaben nicht indentifizieren)

                      $dimensions imagettfbbox($fontsize0$fontfile$text); // imagettfbbox sagt uns wie groß wohl ein bestimmter text werden würde. sprich wieviele pixel hoch und breit

                      // imagettfbbox() gibt exact das gleiche wie imagettftext() zurück macht aber praktisch nichts (zeichnet keinen text auf nen bild drauf)
                      // dazu zu sagen ist, dass die rückgabe werte zum kotzen sind.
                      // der text wird auf einem hypotetischem achsenkreiz gezeichent und fängt iwo im negativen x/y bereich an und endet iwo im postiven x/y bereich

                      $x1 $dimensions[6]; // -
                      $y1 $dimensions[7]; // -
                      $x2 $dimensions[2]; // +
                      $y2 $dimensions[3]; // +

                      $width = ($x1 * -1) + $x2// dynamische höhe und breite entsprechen des textes
                      $height = ($y1 * -1) + $y2;
                      //$width = 160; // falls man fixe größen haben will (muss aber auch groß genug sien)
                      //$height = 36;

                      $image imagecreatetruecolor($width$height); // bild erstellen

                      $color_bg     imagecolorallocate($image255255255); // hintergrund farbe
                      $color_lines imagecolorallocate($image255255255); // linien (gitter sowie kreuz-quer linien)
                      $color_text     imagecolorallocate($image000); // captcah text farbe

                      imagefill($image00$color_bg); // hintergrund farbe füllen
                      imagettftext($image$fontsize0$x1 * -mt_rand(48), $y1 * -mt_rand(15), $color_text$fontfile$text); // captcha text zeichen

                      for($x 0$x $randomlines$x++) // hier werden die kreuz-quer linien gezeichnet ($randomlines)
                          
                      {
                          
                      //             x1 y1 x2 y2
                          
                      $cords = array(0000);

                          if(
                      mt_rand(01) == 0// horizontal
                              
                      {
                              
                      $cords[0] = mt_rand(0$width 1);
                              
                      $cords[2] = mt_rand(0$width 1);
                              
                      $cords[3] = $height 1;
                              }
                          else 
                      // vertical
                              
                      {
                              
                      $cords[1] = mt_rand(0$height 1);
                              
                      $cords[3] = mt_rand(0$height 1);
                              
                      $cords[2] = $width 1;
                              } 
                      // end if
                          
                          
                      imageline($image$cords[0], $cords[1], $cords[2], $cords[3], $color_lines); // und dann halt die linie
                          
                      // end for

                      imagegrid($image$width$heightmt_rand(812), $color_lines); // noch das gitter drübergezeichnet

                      $_SESSION['captcha'] = $text// du musst ja iwie nachher wissenn welcher captcha text nun ausgegeben wurde

                      header('Content-Type: image/png'); // der header der deinem webbrowser sagt, dass hier keine webseite (text/html) sondern was anderes kommt und zwar eine png grafik
                      imagepng($image); // erstellt aus der image resource dann eine png grafik (und gibt diese gleich an den browser aus)

                      ?>
                      (oh gott all die kommentare die ich noch schreiben musste)

                      jetzt musst du in deinem normalen php dokument (da wo du halt den captcha vergleichst) ne session starten (wieder session_start() an anfang schreiben) und dann sollte der captcha text der in der grafik steht in der variable $_SESSION['captcha'] zu finden sein.

                      Kommentar


                      • #12
                        Andernfals kommt das Bild an erster stelle, weil du vor der Ausgabe des Captchas nichts an den Browser senden darfst!
                        Stimmt, an den Header habe ich nicht gedacht.

                        Was allerdings Javascript jetzt mit dem ganzen zu tun hat? Mehr als einen unqualifizierten Kommentar?

                        Kommentar


                        • #13
                          Vielen Dank für die Erläuterungen und Beispiele.

                          Leider benötige ich aber trotzdem ein Zeitlimit von 60 Sekunden für das captcha.

                          Das ganze ist für ein Projekt das ich morgen abgeben muß.

                          Ich hab mein captcha Script umgebaut um direkt die captcha.jpg Datei an den Browser zu schicken, aber ich hab bis jetzt keine Lösung für das Zeitlimit gefunden, ich befürchte meine PHP Kenntnisse reichen nicht aus.

                          Kommentar


                          • #14
                            Zitat von PartisanEntity Beitrag anzeigen
                            Vielen Dank für die Erläuterungen und Beispiele.

                            Leider benötige ich aber trotzdem ein Zeitlimit von 60 Sekunden für das captcha.

                            Das ganze ist für ein Projekt das ich morgen abgeben muß.

                            Ich hab mein captcha Script umgebaut um direkt die captcha.jpg Datei an den Browser zu schicken, aber ich hab bis jetzt keine Lösung für das Zeitlimit gefunden, ich befürchte meine PHP Kenntnisse reichen nicht aus.
                            ich weiß jetzt nicht ob ich einfach kotzen und schreien soll oder dich einfach ignorieren.

                            JUNGE!

                            DAS IS DIE LÖSUNG DIE DU SUCHST!

                            DIE IS SO TOLL DA BRAUCHST DU NICHMA MEHR NEN ZEITLIMIT WEIL KEINE DATEI GESPEICHERT WIRD!

                            lies es dir noch einmal GANZ GENAU durch!

                            Kommentar


                            • #15
                              ich weiß jetzt nicht ob ich einfach kotzen und schreien soll oder dich einfach ignorieren.
                              So, deine Verwarnung ist nun fällig.

                              JUNGE!

                              DAS IS DIE LÖSUNG DIE DU SUCHST!

                              DIE IS SO TOLL DA BRAUCHST DU NICHMA MEHR NEN ZEITLIMIT WEIL KEINE DATEI GESPEICHERT WIRD!

                              lies es dir noch einmal GANZ GENAU durch!
                              Schreien gehört nicht zum guten Ton in diesem Forum, es ist nicht notwendig, deine Texte komplett in Versalschreibweise abzufassen.

                              Kommentar

                              Lädt...
                              X