Deutschland United States United Kingdom
ContentLion - Open Source CMS

QA Captcha

QA Captcha

Nächstes Plugin von Juku. Diesmal die Captcha: http://code.contentlion.de/Plugin+Captcha/
Folgendes ist mir aufgefallen:

- ReadMe.txt kannst du rausschmeißen, die liest dort eh keiner. Wenn man sich das über die Plugin Gallerie installiert, bekommt der User die nichtmal zu gesicht. Kannst das einfach nach der Installation ausgeben.
- Wir auch schon bei Adminmail, Settings über die Settings-Klasse speichern und mit richtiger area und areaType.
- beim Create-Table nicht latin1, sonder utf8 nutzen. Sowas im Nachhinein zu korrigieren ist immer dumm, besonders wenn man viele Datensätze hat (spreche aus erfahrung)
- Sessionvariablen und Events bitte auch mit Namespaces.
- Die "Zeichen"-Eigenschaft der Klasse Plugin_Captcha_Captcha nennst du mal besser chars oder letters oder so. Denglisch ist immer dumm.
- Wofür brauchst du die Klasse Plugin_Captcha_selector? Genau das gleiche macht auch system/plugins/combobox.php
- Bitte nicht den autoloader überschreiben!
- Wieso hast du eine kopie der Datenbankklasse eingefügt?
- Auch hier wieder auskommentierter Code einfach rausschmeißen, der steht im SVN.

Nächstes Plugin von Juku. Diesmal die Captcha: http://code.contentlion.de/Plugin+Captcha/
Folgendes ist mir aufgefallen:

- ReadMe.txt kannst du rausschmeißen, die liest dort eh keiner. Wenn man sich das über die Plugin Gallerie installiert, bekommt der User die nichtmal zu gesicht. Kannst das einfach nach der Installation ausgeben.

Danke für die Idee! :)
Aber wegen der Zeile lohnt es sich gar nicht, diese auszugeben.^^#
--> Habs einfach gelöscht. ;)


- Wir auch schon bei Adminmail, Settings über die Settings-Klasse speichern und mit richtiger area und areaType.

s. anderen Thread, weiß nicht wie. :D
Bitte Code-Bsp. :D


- beim Create-Table nicht latin1, sonder utf8 nutzen. Sowas im Nachhinein zu korrigieren ist immer dumm, besonders wenn man viele Datensätze hat (spreche aus erfahrung)

Ok, habs mal korrigiert. ;)


- Sessionvariablen und Events bitte auch mit Namespaces.

Gemacht. ;)


- Die "Zeichen"-Eigenschaft der Klasse Plugin_Captcha_Captcha nennst du mal besser chars oder letters oder so. Denglisch ist immer dumm.

Habs geändert. ;)


- Wofür brauchst du die Klasse Plugin_Captcha_selector? Genau das gleiche macht auch system/plugins/combobox.php

Konntest du mir das nicht früher sagen?!? :D
Egal, wo ichs eh einmal implementiert habe... :rolleyes:


- Bitte nicht den autoloader überschreiben!
- Wieso hast du eine kopie der Datenbankklasse eingefügt?

Weil ausnahmsweiße auch du mal nen Fehler gemacht hast. ^^
Und zwar sind die Pfade in der autoload.php alle relativ.
Und wenn ich dann eine Datei habe, die sich nicht im selbem Verzeichnis befindet und trotzdem den AutoLoader nutzen möchte, dann kommt das Problem.
Selbes gilt für die MySql / Datenbank - Klasse, hier habe ich auch nur den Pfad angepasst.


- Auch hier wieder auskommentierter Code einfach rausschmeißen, der steht im SVN.

Kannst du mir mal genauerer sagen wo? :rolleyes:
Ich finde nämlich keinen. :D

So, habe alles, außer dieses Settings-Zeugs behoben. ;)

Die Klassen sollen in der Verzeichnisstruktur sein! Deswegen darf der auch nicht überschrieben werden ;-)

http://code.contentlion.de/filedetails.p…s%2Fcaptcha.php "//$ttf = $_SERVER['DOCUMENT_ROOT']."font.ttf";"

Hmmm...
Überarbeite gerade das Plugin.

Die Klassen sind in der Verzeichnis-Struktur.
Aber die captcha.php ja nicht, die kann ich auch nicht ins Home-Verzeichnis kopieren lassen... ^^

Jemand nen Tipp? :)

Pack se doch einfach in den Plugin ordner rein? Oder wie meinst das :D

Da habe ich sie doch auch aktuell liegen. ^^

In den classes-Ordner direkt. Verstehe dein Problem grade irgendwie nicht^^

Naja, die captcha.php ist ja "eigenständig", wird also alleine, ohne den direkten Kontakt mit CL aufgerufen.
(die Bilder haben ja als URL einfach nur domain.tld/system/plugins/captcha/capcha.php und da wird aber keine HTML-Seite, sondern das Bild angezeigt. ;) )

Mit dem BlankPage-Plugin geht das leider nicht, da selbst wenn ich den Header anpasse, immer nen Fehler erscheint. :(
(Fehler in Grafik, kann nicht angezeigt werden bla bla...)
Deßhalb musste ich das so umständlich machen. :/
Das ist ja auch keine Klasse...

BlankPage dürfte gehen. Du musst dir mal den Quelltext des Bildes anschauen oder den header-Befehl kurz auskommentieren, dann siehst du eine richtige Fehlermeldung ;-)

BTW: Wenn du header benutzt, musst du die Funktion ExecuteHttpHeader der Editor- bzw. BlankPage-Klasse überschreiben, damit der richtig ausgeführt wird. Deswegen bekommst du vermutlich auch einen Fehler.

So, habe mir jetzt mal die Arbeit gemacht und das Ganze überarbeitet. :)
D.h. du darfst es jetzt nochmal testen! :D

Sein Bild erhält man jetzt so:
<Domain>/captcha/captcha.html

Funktioniert auch alles supi! :)
Aber bevor du mir jetzt mit Kritik in der activate.php kommst:
Die Zeilen sind absichtlich auskommentiert.
Da ist nämlich ein Bug in CL, weßhalb ich die Rechte manuell in die DB eintragen muss.
Anders funktioniert das leider nicht.

- Namespaces nicht eingehalten (z.B. bei dem Event captcha_show oder auch bei Session_Variablen)
- Bitte Tabs verwenden
- Warum hast du $this->chars in $this->zeichen umbenannt? Englisch ist doch viel besser.
- Wie verwende ich das denn jetzt? Mit Überprüfung usw?

Hab erstmal alles korrigiert. ;)

Zur Verwendung:
In dein Formular integrierst du einfach einen <img>-Tag mit der URL http://<Deine Domain>/captcha/captcha.html .
Wenn du das Formular dann überprüfst / validierst, musst du nur über

PHP-Quelltext

1
Plugin_Captcha_Captcha::getCode()
die "Zeichenfolge" / den Inhalt des Captchas auslesen lassen und überprüfen, ob dieser mit dem im POST-Array (dein Formularfeld) identisch ist. Mehr nicht. ;)

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
Formular-Beispiel: 
<form ...>

...
<img src="captcha/captcha" alt="Captcha" title="Captcha-Bild" /><br />
<input type="text" name="captcha_code_oder_was_auch_immer" />

...

</form>


Und dann wertest du das einfach aus:

PHP-Quelltext

1
2
3
4
5
if (isset($_REQUEST['captcha_code_oder_was_auch_immer']) && $_REQUEST['captcha_code_oder_was_auch_immer'] == Plugin_Captcha_Captcha::getCode()) {
  //Alles ok, Captcha stimmt. ;)
} else {
  //Fehler-Meldung ausgeben
}

So, jetzt hab ich getestet ;-)

- Bau noch eine Statische Funktion ein, die den Code überprüft (wo man dann seinen eingegebenen Code übergeben kann). Weil du machst die Buchstaben ja klein beim zurückgeben
- Und noch eine Funktion, die den Image-Tag zurückgibt (dachte erst dafür ist die Funktion getCode).
- captcha/captcha.html /plugins/captcha/captcha.html verschieben
- Du hast immer noch deutsche Variablen drin (groesse, winkel)
- Ich glaube dir fehlt auch noch eine Quellenangabe ;-) Wenn man mal nach teilen von deinen Code sucht, findet man zum Beispiel das hier, was dem schon sehr extrem ähnlich sieht: http://www.itschi.net/forum/7/4881

Behebe ich morgen. ;)
Ich habe das Captcha-Bild wirklich nach nem Tutorial gemacht, aber der Author des angegebenen Links hat auch nur davon kopiert.^^
Ich such das Tut mal raus. ;)
War auf jeden Fall nen größerer PHP-Blog. ;)

Wo ist denn jetzt die Quellenangabe? Ohne werde ich es nicht veröffentlichen können.

Kannst's nun veröffentlichen. ;)

Werd ich mir morgen nochmal anschauen.

Ähnliche Themen