Captcha-Funktion (Sicherheitsabfrage) des pSys kurz vorgestellt

Begonnen von k00ni, 27. Juni 2007, 10:15:22

Vorheriges Thema - Nächstes Thema

k00ni

Ich arbeite sehr viel mit dem pSys. Da es hier in letzter Zeit verstärkt zu Problemen mit Spam kam, dachte ich mir, dass ich dazu mal einen Überblick über die Einbindung der Captcha-Funktionen des pSys schreiben könnte. Man braucht sich eigentlich um nicht viel zu kümmern, denn das wird standardmäßig vom pSys übernommen. Einzig die Einbindung in bestehende oder das eigene Skript muss man selbst machen.
 
Wo liegen die benötigten Dateien für Captcha?
Im Ordner lib des Hauptordners liegen die Dateien.
captcha.php
Hier liegt die eigentliche Funktionalität. Hier wird eine zufällige Zeichenfolge generiert. Diese wird dann mit der captcha.png kombiniert und angezeigt. An sich braucht man nur diese Datei in einem img-Tag einbinden und besitzt ein Bild mit einer zufällig generierten Zeichenfolge.
captcha.png
Dies ist der Hintergrund des Captcha-Bildes. Dieser kann beliebig angepasst werden. Mit dieser Bilddatei wird die generierte Zahlfolge kombiniert und angezeigt.
captcha.ttf
Die Schriftart, mit der die generierte Zeichenfolge ausgegeben wird. Auch hier kann man wieder eine eigene einsetzen, nur sollte man aufpassen, dass die Schrift nicht unleserlich wirkt und auch mit dem Hintergrund noch zusammenpasst.
 
Anmerkung: An sich braucht man hier nichts zu verändern. Ich denke aber, dass es für manchen interessant ist, der hier bestimmte Anpassungen machen möchte.
 
Wie binde ich die Captcha-Funktionalität in meine / bestehende Skripte ein ?
Anmerkung: Um die Einbindung in einem pSkript (im Beispiel pBlog) zu sehen, kann man sich http://www.powie.de/cms/forum/showthread.php?id=22618\" rel=\"external nofollow\">diesen Thread anschauen.  
Direkt wird Captcha ja von pSys eingebunden. Weiterhin wird bei jedem Aufruf der captcha.php eine neue Zeichenkette generiert, wenn noch keine in der Session ( $_SESSION [\'pcaptchacode\']) bestehen sollte.
 
Einbinden des Bildes mit dem Sicherheitscode
 

/captcha.php\" border=\"0\" alt=\"captcha\" title=\"Sicherheitscode\" align=\"left\">

 
 
Damit wird die Captcha.php aufgerufen, eine zufällige Zeichenkette generiert bzw. eine bestehende eingebunden und diese dann als einfaches Bild angezeigt. Die Einbindung kann überall im Dokument erfolgen.
 
Etwas für die Eingabe einbinden
Den Code kann man dann beispielsweise über ein einfaches input-Feld abfragen.
 


Man sollte auf den Namen achten. Es ist nicht vorgeschrieben, dass man, wie im Beispiel hier, ccode als Namen verwendet, nur bei der späteren Abfrage sollte man, wenn man einen eigenen verwendet, den bestehenden Code hier anpassen.Ich möchte anmerken, dass es egal ist, wie man den Code abfragt und speichert. Denkbar wäre bspw. auch   per JavaScript ein Fenster zu öffnen und den Code dann dort abzufragen. Grenzen sind hier keine gesetzt.Sicherheitscode überprüfenNachdem man bspw. das Formular abgesendet hat, kann man den eingegebenen Sicherheitscode abfragen. Dies geht ganz einfach per
// Captcha-Code abfragen
if ($_POST [\'ccode\'] != $_SESSION [\'pcaptchacode\'])
{
msgbox(\"Der eingegebene Sicherheitscode ist falsch.\");
}


 
 
Der zuvor generierte Code wird unter $_SESSION [\'pcaptchacode\'] gespeichert. Damit muss man also seine Eingabe vergleichen lassen. Hier wäre es dass Textfeld von weiter oben mit dem Namen ccode.
 
Abschlussanmerkung
An sich wäre es das schon. Ich denke, dass es einfacher kaum geht. Anmerkungen und Fragen sind wie immer willkommen /uploads/emoticons/icon_e_smile.gif.4a0acefcb917340d2c82e5239c009e6e.gif\" alt=\":)\" />
 
Grüße

Powie

will man einen neuen Code generieren:
unset($_SESSION [\'pcaptchacode\']);
 [/uploads/emoticons/icon_e_surprised.gif.a005678239f11b45b64b526b2c82e9a1.gif\" alt=\":o\" />]

k00ni

Was mir aufgefallen ist, dass der Code nach einer kurzen Weile schon neu generiert wird. Kann also sein, dass man direkt zwischen die Änderungszeiten fällt und man dann eine neue Eingabe machen muss. Gibts da eine Dauer, wie lange so ein Code gültig ist?
 
Grüße

Powie

Der Code verfällt mit der Session, dort wird er ja gespeichert. Sollte unter normalen Umständen also nichts passieren.

all your base are belong to us / Discord