| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
Feuergold
Anmeldedatum: 09.03.2007 Beiträge: 7
|
Verfasst am: 09.03.2007, 16:48 Titel: Ziffern und Buchstaben .... |
|
|
Ahoi,
ich wollte mal anfragen, was ich ändern muß, um erstens mehr als generell sichtbare 5 Ziffern zu bekommen (auf 6 konnte ich erhöhen durch anfügen von Nullen, aber meist sind nur 5 zu sehen) und was man machen muß, um Buchstaben mit reinnehmen zu können.
Soweit mir bekannt ist, gibt es immer mehr Bots, die eine gewisse Anzahl an Ziffernkombinationen ausprobieren können und dann doch wieder alles zuspammen.
Sollte man mir das falsch zugetragen haben, lasse ich mich auch gerne eines besseren belehren, aber die Kombination Buchstaben/Zahlen würde mich trotzdem interessieren.
Achja, und was hat es mit diesem "Key" auf sich, den man im Script ändern kann/soll? Wie änder ich den, gibt es da feste Keys, oder mache ich das frei Schnauze? Wie kommt so ein Key zustande?
Das wäre für das Tutorial interessant, denn damit kann man als Anfänger nichts anfangen, daß man das ändern kann/soll, denn wie soll man das machen, wenn man das nicht kennt?
Ansonsten Danke für das Tutorial, bis auf die Sache mit den Keys bin ich gut damit klargekommen. Ein bissel rumprobieren im Test-GB, das ich für sowas habe, und nach kurzer Zeit klappte es. Ist das erste Captcha, mit dem ich wirklich etwas anfangen konnte!
Gruß Feuergold  |
|
| Nach oben |
|
 |
frameguard
Anmeldedatum: 05.03.2007 Beiträge: 117 Wohnort: Wien
|
Verfasst am: 11.03.2007, 22:46 Titel: |
|
|
Hallo Feuergold,
den Key änderst, wie Du so richtig bemerkt hast, einfach frei Schnauze. Eine beliebige Buchstaben-/Ziffernkombination.
Wichtig ist nur, daß der Key dann im Captcha-Script und in der Überprüfung des CAPTCHA-Codes identisch sein müssen. |
|
| Nach oben |
|
 |
frameguard
Anmeldedatum: 05.03.2007 Beiträge: 117 Wohnort: Wien
|
Verfasst am: 12.03.2007, 12:56 Titel: |
|
|
Zu Deiner anderen Frage (hab ein bißchen darüber geschlafen):
Im captcha.php gibt es ziemlich am Anfang die Zeile:
Code:$text = rand(1000,10000); //Zufallszahl
Die erzeugt eine Zufallszahl zwischen 1000 und 10000, mit der die $text-Variable dann belegt wird.
Wenn Du da stattdessen schreibst:
Code:function randomString($len) {
srand(date("s"));
$possible="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
$str="";
while(strlen($str)<$len) {
$str.=substr($possible,(rand()%(strlen($possible))),1);
}
return($str);
}
$text=randomString(5);
ergibt das ein 5stelliges Buchstaben-/Zahlen-Kombi-CAPTCHA.
Der Funktion randomString(); kannst im Prinzip jede Zahl als Anzahl der gewünschten Stellen übergeben, aber bei mehr als 5 Stellen könnte ich mir Probleme mit der Darstellung vorstellen. |
|
| Nach oben |
|
 |
frameguard
Anmeldedatum: 05.03.2007 Beiträge: 117 Wohnort: Wien
|
Verfasst am: 12.03.2007, 19:51 Titel: |
|
|
Ich hab daraus grad was weitergebastelt, was vielleicht den einen oder anderen hier interessiert.
Mit der obigen Funktion kann man sich nämlich auch den Key zufällig generieren lassen (was noch mehr Sicherheit bedeutet):
In der captcha.php sähe das dann etwa so aus:
Code: function randomString($len) {
srand(date("s"));
$possible="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
$str="";
while(strlen($str)<$len) {
$str.=substr($possible,(rand()%(strlen($possible))),1);
}
return($str);
}
$text=randomString(5);
$randkey=randomString(12);
$keyfile="key.txt";
$handle= fopen($keyfile,"w");
fwrite($handle,$randkey);
fclose($handle);
Der Script schreibt den zufällig generierten Key in eine key.txt (dazu müßt ihr eine leere key.txt-Datei erzeugen, sie ins captcha-Verzeichnis hochladen und mit chmod die entsprechenden Schreibrechte für sie vergeben).
Natürlich ändern wir dann auch die Zeile
$_SESSION['captcha_spam'] = encrypt($text, "8h384ls94"); //Key
in
$_SESSION['captcha_spam'] = encrypt($text, $randkey); // mit zufälligem Key
Die key.txt müssen wir dann im verarbeitenden Script auslesen, um den Key verwenden zu können:
Code:$keyfile="CAPTCHA/key.txt";
$handle=fopen($keyfile,"r");
$randkey = fread($handle, filesize ($keyfile));
fclose($handle);
Achtung: Pfadangaben sind auf vielen Servern case-sensitive, wenn die key.txt bei euch also in einem Verzeichnis "captcha" liegt, müßt ihr die Pfadangabe im obigen Codefragment ändern!
Die Zeile
$sicherheits_eingabe = encrypt($_POST["sicherheitscode"], "8h384ls94");
müssen wir dann natürlich auch abändern in:
$sicherheits_eingabe = encrypt($_POST["sicherheitscode"], $randkey);
- und voilá, schon arbeiten wir mit einem jedesmal neu zufällig generierten Key.
Wenn's wer ausprobieren möchte: ich habe auf meiner Homepage ein "Test-Gästebuch", in dem ich herumspiele, bevor ich etwaige Änderungen ins eigentliche GB übernehme. http://www.frameguard.at.tt/gb_test/ |
|
| Nach oben |
|
 |
Feuergold
Anmeldedatum: 09.03.2007 Beiträge: 7
|
Verfasst am: 12.03.2007, 21:24 Titel: |
|
|
Ahoi frameguard,
wow, das sind mal viele Antworten, Danke!
Mal schauen, wie ich das alles verwende und einbaue, heute Abend habe ich nicht mehr den Kopf dazu, aber in den nächsten Tagen bestimmt.
Die Darstellung mit 6 Zeichen funktioniert nicht immer, das habe ich schon mit 6 Zahlen ausprobiert. Die letzte Ziffer ist immermal entweder gar nicht oder nur zum Teil lesbar.
Von daher müßten es dann wohl höchstens 5 Zeichen sein, oder aber man ändert die Größe vom image, damit 6 Zeichen problemlos dargestellt werden können.
Die Mischung aus Ziffern und Buchstaben finde ich nochmal 'nen bissel sicherer als nur Zahlen. Deswegen werde ich das die nächsten Tage mal ausprobieren.
Ich berichte dann, sobald ich etwas zu vermelden habe *g*
Nochmals Danke,
Gruß Feuergold  |
|
| Nach oben |
|
 |
frameguard
Anmeldedatum: 05.03.2007 Beiträge: 117 Wohnort: Wien
|
Verfasst am: 12.03.2007, 21:43 Titel: |
|
|
Ich mußte, da ich eine andere Schriftart als Arial verwende, da auch basteln - es genügt, wenn Du in der Zeile
$t_x = rand(5,50);
in der captcha.php den zweiten Wert änderst (ich hab da zB $t_x = rand(5,30); stehen).
Die Funktion rand() ist nämlich folgendermaßen definiert:
rand(minimum, maximum)
An der Bildgröße etc. brauchst also eigentlich nix drehen.  |
|
| Nach oben |
|
 |
Feuergold
Anmeldedatum: 09.03.2007 Beiträge: 7
|
Verfasst am: 13.03.2007, 19:14 Titel: |
|
|
Klasse Tip, probiere ich doch direkt mal aus, Danke!
*ausprobiert habe*, habe allerdings nur Großbuchstaben und Ziffern genommen (ist sonst evtl. zu schwer zu unterscheiden bei manchen Buchstaben) und die rand-Zahl noch auf (5,15) geändert, damit 6 Zeichen reinpassen, klappt jetzt, Danke
Was mir noch einfällt:
Im PHP-Magazin 2/07 ist das Buch "No Spam!" als PDF auf DVD dabei.
Zum Verhindern von Spam im Vorfeld sind einige gute Ratschläge drin, aber ich bin erst auf Seite 40 mit lesen, bis zum Ende sind's noch gut 100 Seiten, auf denen auch einige Scripte zu finden sind.
Falls jemand daran Interesse hat, einfach das PHP-Magazin holen *g*.
Wie gut das ganze ist, kann ich nicht sagen, bin wie gesagt noch nicht durch, aber da setzt eh jeder für sich eigene Maßstäbe, hat andere Interessen, was wichtig ist. |
|
| Nach oben |
|
 |
frameguard
Anmeldedatum: 05.03.2007 Beiträge: 117 Wohnort: Wien
|
Verfasst am: 13.03.2007, 19:53 Titel: |
|
|
Feuergold hat Folgendes geschrieben:*ausprobiert habe*, habe allerdings nur Großbuchstaben und Ziffern genommen (ist sonst evtl. zu schwer zu unterscheiden bei manchen Buchstaben) und die rand-Zahl noch auf (5,15) geändert, damit 6 Zeichen reinpassen, klappt jetzt, Danke 
Was ich mir da auch schon überlegt habe, ist zB O und 0 rauszunehmen - die sind vielleicht doch eher schwer zu unterscheiden (hängt aber auch von der Schriftart ab). Bei Kleinbuchstaben habe ich da weniger Bedenken, die laß ich bei mir sicher drin.
Zum PHP-Magazin: Ich weiß jetzt nicht einmal, ob ich das in Österreich überhaupt krieg (wahrscheinlich schon). Aber danke auf jeden Fall für den Tip! |
|
| Nach oben |
|
 |
Feuergold
Anmeldedatum: 09.03.2007 Beiträge: 7
|
Verfasst am: 13.03.2007, 19:59 Titel: |
|
|
Hm, steht zumindest 'nen Preis für Ösiland auf dem Cover vom PHP-magazin
Bei den Buchstaben habe ich vor allem an das große i und das kleine L gedacht, die doch meistens verdammt ähnlich ausschauen und gerade bei solchen Bildern drunter schwer zu erkennen sind. 0 und O ist bei Arial eigentlich ganz gut zu unterscheiden. |
|
| Nach oben |
|
 |
frameguard
Anmeldedatum: 05.03.2007 Beiträge: 117 Wohnort: Wien
|
Verfasst am: 13.03.2007, 20:06 Titel: |
|
|
Naja, wie gesagt, ich verwend nicht Arial. *g* Ich verwende eine Schriftart, die sich "X-Files" nennt und etwas schwieriger zu lesen ist (auch ganz gut gegen Spambots!) - wie gut oder schlecht man bei der 1, l und I unterscheiden kann, hab ich noch gar nicht nachgeschaut.  |
|
| Nach oben |
|
 |
Feuergold
Anmeldedatum: 09.03.2007 Beiträge: 7
|
Verfasst am: 13.03.2007, 20:08 Titel: |
|
|
| Geht auch nicht, da ich das bisher nur in meinem Test-GB ausprobiert habe, in das andere normale implementiere ich das die nächsten Tage, immer eines nach dem anderen. Dann aber gebe ich Dir gerne die URL, außer, Du probierst mal meinen Namen aus *Wink mit 'ner ganzen Palette voller Zaunpfähle geb*ggg* |
|
| Nach oben |
|
 |
frameguard
Anmeldedatum: 05.03.2007 Beiträge: 117 Wohnort: Wien
|
Verfasst am: 13.03.2007, 20:54 Titel: |
|
|
Also auf Dein fertiges Gästebuch bin ich dann schon gespannt. (im derzeitigen hab ich mich grad verewigt) |
|
| Nach oben |
|
 |
Feuergold
Anmeldedatum: 09.03.2007 Beiträge: 7
|
Verfasst am: 13.03.2007, 21:15 Titel: |
|
|
Danke für den Eintrag, habe das gerade per Mail bekommen
Das Script für das GB stand mal in der CT, vor 4 Jahren. Habe das allerdings ein bissel meinen Bedürfnissen angepaßt. Die Mailaddi des Einträgers wird nicht angezeigt, die bekomme ich nur in der Mail zu lesen, bzw. sie steht in der DB. Dann noch die typischen PHP-Spielereien mit Browser, System und Ip *g*
Auch der Versand einer Mail mit dem Eintrag an den Betreiber des GBs war nicht vorgesehen, aber wenn man keine Ahnung von PHP, dafür aber viele Wünsche hat, dann bastelt man halt so lange rum, bis es irgendwie klappt *g*
Mein nächstes Ziel ist eine "Dank-Mail" für den Eintrag an die Mailaddi, die der Einträger angibt. Und halt das Captcha mit den 6 Zeichen, aber das Captcha wird schnell gehen, wogegen das andere wohl minimale Ewigkeiten länger dauert *g*. Ebenso möchte ich mir gerne ein "Admintool" basteln, mit dem ich die Einträge, die man sehen können soll, freigeben kann, ohne in die DB reinzugehen, wie ich es derzeit immer mache, um die Spameinträge zu löschen. Das soll alles über eine spezielle Adminoberfläche gehen ....
Ist noch viel zu tun, warten wir es ab *g* |
|
| Nach oben |
|
 |
frameguard
Anmeldedatum: 05.03.2007 Beiträge: 117 Wohnort: Wien
|
Verfasst am: 13.03.2007, 21:52 Titel: |
|
|
Also ein paar Ideen hätte ich da schon dazu...
mein Gästebuch hab ich ja auch so adaptiert, daß es ein Mail verschickt.
Allerdings logge ich keine IP, Browserinfo oder Systeminfo. IP wäre vielleicht eine gute Idee, muß ich drüber nachdenken.
Die E-Mail wird bei mir angezeigt, aber:
$absmail = $from;
$from = str_replace('@', '(at)', $from);
Das heißt, die Mailadresse wird erst einmal für das Dankesmail (das bei mir einfach als BCc an mich geht) in eine andere Variable ($absmail) kopiert und dann ersetze ich einfahc in der ins GB geschriebenen $from das @ durch (at). So steht dann im Gästebuch (am Beispiel meiner Mailaddy): admin(at)frameguard.at.tt, ohne mailto-Link natürlich, statt mit dem @. Das macht Spambots, die nach Mailadressen suchen, das Leben durchaus schwer, auch wenn's nicht die optimale Lösung ist (das sind mittlerweile nicht einmal mehr Bilder statt Klartext).
Du willst in Deiner Mail mehr Infos haben als in der, die an die User geht? Sollte kein Problem sein.
Ich würde das so angehen:
Zuerst definiere ich mir eine Message für den Admin, und dann eine für denjenigen, der sich ins GB eingetragen hat.
Sagen wir einmal, die heißen $messageAdmin und $messageUser.
Und dann führe ich einfach 2x die Funktion mail(); aus:
mail($Adminmail,$subject,$messageAdmin,$header);
mail($Usermail,$subject,$messageUser,$header);
(wobei der Parameter $header optional ist, der enthält so Sachen wie BCc:, Reply-To: etc., vgl. http://www.phpcenter.de/de-html-manual/function.mail.html)
Schwupps, erledigt.
Die Admin-Oberfläche... naja. *g* Da stehe ich vor dem selben Problem, weil die Original-Oberfläche der Seite, von der ich das Script habe, schlichtweg nicht korrekt funktioniert (sie kann nur die 1. 5 Einträge verwalten, na SUPER).
Aber das geht jetzt ein bißchen off-topic - am besten unterhalten wir uns darüber entweder per Mail oder PN weiter, sonst haut uns Rob aus dem Forum...  |
|
| Nach oben |
|
 |
Feuergold
Anmeldedatum: 09.03.2007 Beiträge: 7
|
Verfasst am: 14.03.2007, 10:28 Titel: |
|
|
Na dann besser per Mail, Kontaktformular hast Du ja vielleicht schon auf meiner Page entdeckt *g*
Ansonsten sage ich nur links oben ....
Den Inhalt für die Mails unterschiedlich gestalten und an mehrere feste Mailaddis schicken, das habe ich schon gemacht, also an verschiedene vordefinierte Leute, da ich mal ein GB als Kontaktbereich/Forumsersatz für 'ne kleine Gruppe Leute gemacht hatte, da haben die anderen dann 'ne Mail mit der Info, daß ein neuer Eintrag gemacht wurde, bekommen, aber mehr nicht, während ich die anderen Spielereien sowie den Text vom Eintrag bekam.
Aber als Antwort auf eine vom User eingetragene Mailaddi, das habe ich halt noch nicht gemacht, das steht als nächstes mit an. Dafür schaue ich mir die Zeilen von Dir dann nochmal genauer an, Danke
Und den Rest nun wirklich per Mail *ggg* |
|
| Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. You can attach files in this forum You can download files in this forum
|
|