yubb.de-Logo
Tutorials
yubb@yubb
yubbService
Inside yubb

Sicherheitscode-Eingabe die 2.



michi´s Tutorial diente mir als Grundlage für dieses Tutorial.
Erstmal wird hier die Bild-Datei erstellt:

Die Datei heißt bei mir sicherheitscode.php:
PHP-Datei:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php
if(isset($_GET['z']))
{
    
header('Content-Type: image/png');
    
$RandInt str_replace('´|´''='base64_decode(base64_decode($_GET['z'])));

    
$width 66//* Die Breite des Rechtecks
    
$height 28//* Die Höhe des Rechtecks
    
$img ImageCreate($width$height); //* Hier wird das Bild einer Variable zu gewiesen

    //* START - Farbenbelegung (Anhand RGB-Farben)
    
$white ImageColorAllocate($img255255255); //* Weiß
    
$black ImageColorAllocate($img000); //* Schwarz
    //* ENDE - Farbenbelegung

    
ImageFill($img00$white); //* Bild mit der Farbe weiß füllen

    //* START - Hauptteil
        //* START - Aussenrand 'dynamisch' anhand der Höhe und Breite zeichnen
         
ImageLine($img00$width-10$black); //* Horizontal oben
         
ImageLine($img0$height-1$width-1$height-1$black); //* Horizontal unten
         
ImageLine($img$width-10$width-1$height-1$black); //* Vertikal rechts
         
ImageLine($img000$height-1$black); //* Vertikal links
        //* ENDE - Aussenrand 'dynamisch' anhand der Höhe und Breite zeichnen

        //* START - Vertikalen zeichnen
         
$StartParameterInt 15//* Abstände
         
for($i=0;$i<$width;$i+=$StartParameterInt)
         {
             
ImageLine($img$i0$i$height$black);
         }
        
//* ENDE - Vertikalen zeichnen

        //* START - Horizontalen zeichnen
         
$StartParamterInt 10//* Abstände
         
for($i=0;$i<$height;$i+=$StartParamterInt)
         {
             
ImageLine($img0$i$width$i$black);
         }
        
//* ENDE - Horizontalen zeichnen

        //* START - Zahlen zeichnen (Wird automatisch in die Mitte generiert
         
$font_height ImageFontHeight(6);
         
$font_width ImageFontWidth(6);
         
$image_height ImageSY($img);
         
$image_width ImageSX($img);
         
$length $font_width strlen($RandInt);
         
$image_center_x = ($image_width/2)-($length/2);
         
$image_center_y = ($image_height/2)-($font_height/2);
         
ImageString($img6$image_center_x$image_center_y$RandInt$black);
        
//* ENDE - Zahlen zeichnen (Wird automatisch in die Mitte generiert
        //* ENDE - Hauptteil

    
ImagePng($img); //* Bild ausgeben
    
ImageDestroy($img); //* Speicher wieder freigeben
}
?>


Einfach durcharbeiten (sind genug Kommentare drin (hoff ich :) (wenn nicht melden)))

Jetzt das Formular und schon fertig ;)
Diese Datei lautet formular.php:
PHP-Datei:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
mt_srand
((double)microtime()*1000000); //* Zufallsgenerator starten

if(!isset($_POST['submit']))
{
$RandInt mt_rand(00001,99999); //* Zufallszahl $RandInt verweisen
?>
<!-- Formular-Edit Start -->
<form method="post" action="<?=$_SERVER['PHP_SELF']?>">
<fieldset style="text-align:center; vertical-align:middle;"><legend>Sicherheitscode</legend>
<input type="text" size="10" maxlength="5" name="zahl">&nbsp;
<img src="./sicherheitscode.php?z=<?=str_replace('=''´|´'base64_encode(base64_encode($RandInt)))?>" alt="" border="0" title="Sicherheitscode">&nbsp;
<input type="submit" name="submit" value="&Uuml;berpr&uuml;fen"></fieldset>
<input type="hidden" name="content[0]" value="<?=str_replace('=''´|´'base64_encode(base64_encode($RandInt)))?>">
</form><br/>
<!-- Formular-Edit Ende -->
&copy; 2004 by LLCoolDannY.de.vu
<?php
}
else
{
    
$RightNumInt str_replace('´|´''='base64_decode(base64_decode($_POST['content'][0]))); //* Umwandlung bitte stehen lassen!!!
    
if($_POST['zahl']==$RightNumInt) echo 'Glückwünsche, dein Sicherheitscode stimmt<br/><a href="'.$_SERVER['PHP_SELF'].'">Nochmal</a>';
         else echo 
'Fehler, bitte gehe <a href="'.$_SERVER['PHP_SELF'].'">zurück</a> und gib den Code erneut ein';
}
?>


Hier könnt ihr ab dem Bereich <!-- Formular-Edit Start --> bis <!-- Formular-Edit Ende --> euer Formular generieren (Nur die Verschlüsselung mit base64 muss bleiben!!!)

Nach dem else könnt ihr dann rumspielen mit den Fehlermeldungen.
Das (C)opyright könnt ihr auf Anfrage rausmachen.

Bei Problemen oder Frage an meine ICQ (255938224) oder eMail-Adresse melden: Daniellehr at gmx dot de

Ich hoffe ihr könnt es verwenden, LLCoolDannY

//edit:
Wer ein Beispiel braucht: http://llcooldanny.s3.cybton.com/sc/formular.php

Geschrieben von LLCoolDannY am 18.06.2004 (19913x gelesen)
weiterempfehlen weiterempfehlen   Druckversion Druckversion   kommentieren kommentieren

Copyright in einem Tutorial? Sonst geht's noch?! :D *lol*
Geschrieben von nameless-one
Jo
Geschrieben von LLCoolDannY
Hallo!

Schönes Tut :)

Allerdings ist das Speichern des Codes im Formular selbst (auch wenn codiert), nicht sehr sicher. Mit einem einfachen Script, welches das Formular aufruft, "ausfüllt" und den Code in 'content[0]' encodiert, kann man ganz einfach flooden.

Den "normalen" User hält das aber bestimmt ab.



Wie wäre es mit Sessions? Würde mich mal interessieren wie man das am besten macht.



MfG, Dominik.
Geschrieben von Dominik
Hallo,
ich finde das Script sehr gut und habe es gerade als Spamschutz in mein Gästebuch eingebaut.
Leider habe ich ein problem - die Eingaben
aus dem Formular werden nicht ins Gästebuch übertragen. Muss ich da statt
action="<?=$_SERVER['PHP_SELF']?>">
dann
action="gb.php"> eingeben?

Wäre für Hilfe sehr dankbar!
Gruss
mikeda
Geschrieben von Mikeda
Wie geht denn ein Code nur zum überprüfen, aber nicht das ei Text ausgegeben wird?
Geschrieben von snake.logan