Sicherheitgrafik (Captcha) für Formulare (Xoops 2.0.1x und 2.2.x, PHP5 kompatibel)
Diese Sicherheitsabfrage kann in jedes Modul eingebaut werden, wo ein Formular vorhanden ist.
Die Funktion
new SecurityImage( $Caption, [$ForMembers], [$NumChar], [$MinFontSize], [$MaxFontSize], [$BackgroundType], [$NumBackground], [$SessionName], [$SensitiveCase]);
Die Parameter
# $Caption (String) = Sicherheitscode der Session
# $ForMembers (bool) = Aktivierung für Member der Seite 1=Ja - 0=Nein
# $NumChar (int) = Anzahl der Zeichen des Sicherheitcodes
# $MinFontSize (int) = Minimale Textgröße
# $MaxFontSize (int) = Maximale Textgröße
# $BackgroundType (int) = Art der Schriftart
# $NumBackground (int) = Anzahl der Farben für das Bild (0 = nicht definiert)
# $SessionName (string) = Name der Session
# $SensitiveCase (bool) = Deaktivieren der Abfrage 1=Ja - 0=Nein
Type der Grafik
* 0=Gitter
* 1=Kreise
* 2=Linien
* 3=Rechtecke
* 4=Elipsen
* 5=Polygone
* 100=Dateien im Ordner (GIF/JPG/PNG)
Ordnererstellung und Freigabe
Ordner für die Schriften ist /uploads/securityimage/fonts/ Ordner für den Cache ist /uploads/securityimage/cacheOrdner für die Grafiken ist /uploads/securityimage/
Wichtig, der Ordner muß auf CHMOD 777 gestellt werden!!!
So nun geht es zur Installation:
Einfach alle Dateien auf den Webserver kopieren und die Rechte setzen.
Danach die Datei /language/german/global.php öffnen und folgende Definitionen ergänzen:
define("_SECURITYIMAGE_CODE","Sicherheitscode");
define("_SECURITYIMAGE_GETCODE","Bitte Sicherheitscode eingeben");
define("_SECURITYIMAGE_ERROR","falscher Sicherheitscode"); define("_SECURITYIMAGE_GDERROR","<strong><font color="#cc0000">GD-Bibliothek ist nicht installiert</font> : <a target="php" href="http://de2.php.net/manual/de/ref.image.php">PHP Manual</a></strong>
");
Weiter muß die Datei class/xoopsformloader.php ergänzt werden. Einfach am Ende folgendes anhängen:
include_once XOOPS_ROOT_PATH."/class/xoopsform/securityimage.php";
Nun geht es ans Modul:
Dies ist nun etwas schwieriger, da jedes Modul anders programmiert ist, generell kann man aber sagen, dass es 1 oder 2 Dateien sind, die bearbeitet werden müssen. Ich habe mir hier mal das orginale Contakt Modul (V 1.0) genommen und werde daran erklären, was gemacht werden muß.
Als erstes öffnen wir die Datei /modules/contakt/contactform.php
Dort suchen wir den Button für das übermitteln des Formulares. Diese Zeile kann von Modul zu Modul anders sein. Hier wird nun die Sicheheitsabfrage in das Formular integriert.
hier ist es folgende Zeile:
$contact_form->addElement($submit_button);
Davor fügen wir folgenden Code ein:
//Sicherheitscode
if (defined('SECURITYIMAGE_INCLUDED')) {
$security_image = new SecurityImage( _SECURITYIMAGE_GETCODE );
if ($security_image->render()) {
$form->addElement($security_image, true);
}
}
//Sicherheitscode Ende
und passen die Zeile für das Einfügen des Elementes an:
$form->addElement($security_image, true);
ändern in
$contact_form->addElement($security_image, true);
Dies muß je nach Modul und Variable für das Formular gemacht werden.
Das war es in dieser Datei.
Nun öffnen wir die Datei /modules/contakt/index.php. Hier suchen wir die Ecke, wo die Überprüfung des Formulares durchgeführt wird, hier ist es folgender Bereich:
if ( !empty($usersCompanyLocation) ) {
$adminMessage .= _CT_LOCATION." $usersCompanyLocationn";
}
Dieser Bereich ist je nach Modul unterschielich.
Hiermit wird die Funktion erstellt. Unter diesen Zeilen fügen wir folgenden Code ein:
//Sicherheitscode
include_once(XOOPS_ROOT_PATH . "/class/xoopsformloader.php");
if ( defined('SECURITYIMAGE_INCLUDED') &&!SecurityImage::CheckSecurityImage() ) {
redirect_header("Pfad zum redirect_header", 2, _SECURITYIMAGE_ERROR ) ;
exit();
}
//Sicherheitscode Ende
Nun müssen wir noch den Pfad in dieser Zeile anpassen:
Dies ist je nach Modul unterschiedlich.
redirect_header("Pfad zum redirect_header", 2, _SECURITYIMAGE_ERROR ) ;
ändern in
redirect_header("index.php", 2, _SECURITYIMAGE_ERROR ) ;
Wenn alle Änderungen gemacht sind, sollte nun im Kontaktformular ein Sicherheitsbild generiert werden, und nur mit dem entsprechneden Code die Daten übergeben werden.
Es kann vorkommen, dass es wie oben beschriebn nur 1 Datei ist die editiert werden muß, dann ist alles in dieser einen Datei zu machen.
Den Hack findet ihr hier http://www.dugris.info/wfdownloads-viewcat.cid-4.htm
und die Erklärung in französisch hier http://www.dugris.info/smartsection-item.itemid-1-page-0.htm
Besten Danke an DuGris die diesen Hack erstellt haben.

(THX to: @Knallkopp_02)








5. Mai 2007 @ 06:45
Can be used in wordpress? Ask how do?
5. Mai 2007 @ 10:21
For Wordpress I use other Captcha. I will show it soon here in the Blog. (As a user one does not have to enter a code, as a guest must one a code enter.)
5. Mai 2007 @ 14:38
Will the concrete should be how do?
6. Mai 2007 @ 06:18
Of course I said yes XPress (WordPress for Xoops) .
13. Oktober 2007 @ 15:35
kann man das in news(koments) einbauen sato?
13. Oktober 2007 @ 15:56
Die XOOPS Kommentare sind Global, also Modulübergreifend. Aber es gibt für die XOOPS-Version 2.0.17 eine Lösung: http://www.dugris.info/modules/wfdownloads/viewcat.php?cid=12
13. Oktober 2007 @ 16:18
Danke ich probire das jetz
25. Januar 2008 @ 17:47
Hallo Sato,
Can i add:
everywhere at file /language/german/global.php? Or i have to add at a specific File Name?
Thanx for your help.