SucheMitgliederKalenderHilfe Hallo, Gast! Registrieren
Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Code im Bild
05.03.2006, 14:51 (Dieser Beitrag wurde zuletzt bearbeitet: 09.03.2006 11:04 von Freshmaker_01.)
Beitrag #1
Code im Bild
Da vor einigen Tagen ja bereits jemand ein Problem hatte mit einem Gästebuch, wo sich ein Bot eingeklingt hatte, habe ich mir überlegt mal ein eigenes Script zu basteln welches, mir ein Bild mit einem Code erzeugt.

Vorab sei gesagt, der Code ist nicht so schön wie greg seiner, aber es geht mir in erster Linie nicht darum ob der Code schön ist sondern darum, dass er funktioniert. Wenn ich den dann auch noch verstehe ist alles perfekt. Biggrin
Ich habe keine großen Kommentationen vorgenommen, wer etwas nicht versteht, der möge fragen. Vielleicht verschieb ich diesen Code auch ins Tutorialforum und erläutere dort ein wenig die Funktionsweise.

Aber nun mal zum Script. Dieses Script ist eine normale Funktion die 3 Parameter benötigt. Was die 3 Parameter bezwecken bzw. wozu sie da sind steht ganz oben als Kommentar. Das Script ist so aufgebaut, dass es von alleine ausrechnet, ob die Anzahl der Zeichen in das Bild passen, werden also mehr Zeichen angegeben als das in das Bild passen, so wird das ganze Script abgebrochen. Eine entsprechende Fehlermeldung wird dann angezeigt.

Zurückgegeben wird ein Array welches 2 Werte beinhaltet. Einmal das Bild und ein mal den Code der auf dem Bild zu dargestellt wird. Diesen Code kann man dann in eine Session schreiben oder was auch immer.

Lange Rede kurzer Sinn, hier erstmal das Script.
PHP-Code:
/*
########### image.php ############
#                                #
#   Autor:  Virus / Carsten      #
#   Email:  virus@webhilfe.info  #
#   Datum:  05.03.2006           #
#                                #
# Funktion fügt einem vorgegeben #
#    Bild einen Code hinzu.      #
#                                #
##################################


==> $code_laenge --> Anzahl der Zeichen die angezeigt werden

==> $codierung --> Welche Zeichen sollen angezeigt werden
      = 0  --> Anzeige von Buchstaben und Zahlen
      = 1  --> Anzeige von Buchstaben
      = 2  --> Anzeige von Zahlen

==> $image --> Bild auf dem der Code angezeigt wird (mit Ordnerangabe)

jpg und gif Bilder sind erlaubt
*/
  
$no_image '<b>Fehlermeldung:</b> Beim öffnen des Bildes ist ein Fehler aufgetreten.<br><br><b>Ursache:</b> Das Bild existiert nicht!<br><br><b>Vorschlag für Fehlerbehebung:</b> korrekten Pfad angeben bzw. Bild hochladen';

  
$wrong_image '<b>Fehlermeldung:</b> Bild kann nicht verwendet werden.<br><br><b>Ursache:</b> Das angegeben Bild ist kein .jpg bzw. .gif Bild.<br><br><b>Vorschlag für Fehlerbehebung:</b> Bild vom Typ .jpg bzw. vom Typ .gif angeben';

  
$wrong_image_size '<b>Fehlermeldung:</b> Bild kann nicht verwendet werden.<br><br><b>Ursache:</b> Das bild ist höher als breit.<br><br><b>Vorschlag für Fehlerbehebung:</b> Bild angeben, welches breiter als hoch ist';

  
$wrong_code_laenge '<b>Fehlermeldung:</b> Falsche Code-Länge angegeben.<br><br><b>Ursache:</b> Das Bild ist zu schmal bzw. es wurden zuviele Zeichen angegeben.<br><br><b>Vorschlag für Fehlerbehebung:</b> Bild verbreitern oder eine geringere Code-Länge angeben';

  
$image_create_false '<b>Fehlermeldung:</b> Bild konnte nicht erzeugt werden.<br><br><b>Ursache:</b> Eventuell unterstützt der Server diese Funktion nicht oder die CHMOD Rechte sind falls.<br><br><b>Vorschlag für Fehlerbehebung:</b> GD-Bibliothek Version 1.6 muss mindestens vorhanden sein, CHMOD Rechte auf min. 644 stellen';

  function 
image_code($code_laenge,$codierung,$image)
  {
    global 
$no_image;
    global 
$wrong_image;
    global 
$wrong_image_size;
    global 
$wrong_code_laenge;
    global 
$image_create_false;

    
$code '';
    
$buchstaben range('A''Z');
    
$ziffern range(09);

    if(!
file_exists($image))
      die(
$no_image);

    
$image_daten getimagesize($image);

    if((
$image_daten[2] != 1) and ($image_daten[2] != 2))
      die(
$wrong_image);

    if(
$image_daten[0] < $image_daten[1])
      die(
$wrong_image_size);

    
$beschreib_flaeche = ($image_daten[0] - 10) / 10;
    if(
$beschreib_flaeche $code_laenge)
      die(
$wrong_code_laenge);

    if(
$image_daten[2] == 1$bild ImageCreateFromGIF($image);
    if(
$image_daten[2] == 2$bild ImageCreateFromJPEG($image);

    
$erste_x_position = ($image_daten[0] - 5);
    
$bereiche $code_laenge 1;

    for(
$i=1;$i<=$code_laenge;$i++)
    {
      
srand((double)microtime()*10000000);

      if(
$codierung == 0)
      {
        if(
rand(0,1) == 0$zeichen $buchstaben[rand(0,25)];
        else 
$zeichen $ziffern[rand(0,9)];
      }
      elseif(
$codierung == 1$zeichen $buchstaben[rand(0,25)];
      elseif(
$codierung == 2$zeichen $ziffern[rand(0,9)];

      
$code .= $zeichen;

      
$neue_x_position = (($image_daten[0] / $bereiche) * $i) - 5;
      
$neue_y_position rand(5,$image_daten[1] - 20);

      
ImageString($bild,10,$neue_x_position,$neue_y_position,$zeichen,1);
    }

    if(
Imagepng($bild,'images/bild.png'))
      
$status[0] = '<img src="images/bild.png" '.$image_daten[3].'>';
    else
      die(
$image_create_false);

    
ImageDestroy($bild);

    
$status[1] = $code;

    return 
$status;
  }

  
$image image_code(6,0,'images/bild.jpg');
  echo 
$image[0].'<br>'.$image[1]; 
Ich habe es mal hochgeladen um zu zeigen das es auch funzt. http://www.webhilfe.info/virus/image_code/image.php

Wer Verbesserungsvorschläge oder Anregungen hat der möge sich melden.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.03.2006, 15:12
Beitrag #2
 
Ich möchte meine Klasse ohnehin nochmal überarbeiten, dass passt mir so nicht.

Ich finde dein Script gut, es tut ja das was es soll. Jedoch finde ich es unschön die {} bei if's wegzulassen.

Übrigens weis ich durch dein Script warum es bei mir Probleme gab Wink Ich sag nur global lol.

Also, haste toll gemacht!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.03.2006, 20:15
Beitrag #3
RE: Code im Bild
Ich lasse diese Klammern eigentlich auch nur dann weg, wenn ich zu 100% weiß, dass ich nur 1 Anweisung in der if-Anweisung habe. Ich lösche die Klammern auch erst später nachdem ich genau weiß ob das Script funzt oder nicht. Es ist mir leider auch schon mal passiert, dass ich zu der einen Anweisung eine zweite Anweisung hinzugetan habe und diese aber nicht funzte weil die Klammern fehlten.

Also ich persönlich finde es schöner wenn bei einer Anweisung die Klammern wegfallen. Aber jedem das seine.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  gzip Code Na-Ich 3 650 21.11.2006 18:37
Letzter Beitrag: dino
  bild auf bild packen? Freshmaker_01 3 695 07.07.2006 14:26
Letzter Beitrag: Freshmaker_01
  PHP Code in meinem Tutorial Script rene 4 734 23.09.2004 13:52
Letzter Beitrag: rene

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
KontaktWebhilfe.infoNach obenZum InhaltArchiv-ModusRSS-Synchronisation