| | | | |
| |||||||
| PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen |
|
| | LinkBack | Themen-Optionen | Thema bewerten |
| | |
| Erfahrener Benutzer | Hallo Leute! Als erstes vornweg,dies ist mein aller erstes Tut überhaupt und ich hoffe ich schreibe es gut! Es wird dafür sicher viele andere und auch bessere Möglichkeiten geben dieses auszubauen. Ich habe mir hier ein ganz einfaches und simples Captcha geschrieben in der Art einer Gleichung. Ich eine Gleichung für besser,weil ein einfacher Zufallscode vieleicht doch zu einfach ist. Spambots versuchen alle Felder in einem Fprmular auszufüllen und das auch ziemlich schnell (Ich glaube in Millisekunden,bin mir aber nicht sicher)! In Form einer Gleichung haben es diese Bots aber schwer denn man braucht Zeit um diese auszurechnen und dann auch ein zu tippen,zuviel Zeit für einen Bot! Genug der langen Rede fangen wir an! Also als erstes legen wir uns mal zwei Dateien an, die eine nennen wir captcha.php und die andere formular.php (natürlich optional)! So nachdem wir das gemacht haben erstellen wir uns in einem Grafik Programm ein png Bild (natürlich gehen auch andere Formate) und nennen dieses captcha_bg.png (optional)! Und natürlich eine Schriftdatei müssen wir uns in dem Verzeichnis wo wir unsere angelegten Dateien und das Bild rein gespeichert haben auch noch rein speichern. Dazu könnt einfach aus dem dem Ordner eures Systems eine Datei in euer Verzeichnis rein kopieren, ich habe mich für tahoma.ttf entschieden! Ihr könnt euch auch was anderes suchen,aber beachtet bitte nicht alle Schriftformate unterstützen Zeichen wie + oder =. Also testet das in einem Grafikprogramm vorher einfach aus ob das in der Schriftart unterstützt wird! So und nun kommen wir zum Code,denn ich denke an Vorinfos reicht das aus! Als erstes schreiben wir uns eine Funktion die uns einen zufälligen Wert generiert! Funtion: PHP-Code: Den Parameter $legth1 = 3 sagt das ein Zufallswert maximal 3 Zeichen haben darf! Dann benutze ich die Funktion PHP: array_merge - Manual und setze in der php funktion PHP: range - Manual die Art der Zeichen fest die Vorkommen darf,da sies eine Gleichung ist beschränken wir uns auf Zahlen von 1 - 9. Natürlich kann man dann auch tief in die Mathematick gehen und x Gleichungen oder so erstellen,aber macht das wirklich Sinn? Nachdem wird das gemacht haben nutzen wir die php funktion PHP: shuffle - Manual Anschlisend generieren bzw. bilden wir uns dann unseren String dazu nutzen wir die Funktionen PHP: implode - Manual PHP: array_slice - Manual So damit haben wir die Funktion fertig! Nun wollen dazu kommen zwei Gleichungsteile zu erstelle mit denen dann natürlich auch ein Ergebnis erstellt werden kann was anschliesend dann den Code ergibt der eingegeben werden muss! Code um die Gleichungsteile zu erstellen! PHP-Code: PHP: rand - Manual Wir erstellen also zwei Variablen eine $teil1 und eine $teil2! Bei diesen Variablen bringen wir auch unsere Funktion generate_gleichung zum Einsatz! Mit der Funktion rand(2,3) bilden wir dann einen String der je nach Zufall 2 oder auch 3 Zaichen haben kann! So nun haben wir also auch unsere Gleichungsteile generiert und können nun eine Aufgabe erstellen die die Gleichung bildet! Gleichungs Code: PHP-Code: So nun haben wir den Teil der Gleichung geschafft und das Ergebnis steht! Kommen wir nun zum Teil des Bildes denn wir wollen das ja dann grafisch darstellen. Nun gut dann los fangen wir an! Einen Strin ertsellen der die Gleichung enthält und im Bild eingesetzt wird! PHP-Code: Nun kommen wir dazu das png Bild mit PHP zu erzeugen! PHP-Code: PHP: imagecreatefrompng - Manual und speichern das Ergebnis in der Variablen $png Als nächstes legen wir fest wie unser Imagestring (unsere Gleichung) ausschauen soll! PHP-Code: PHP: imagecolorallocate - Manual Wir müssen hier nun wieder die Variable $png zum Einsatz bringen da ja in der Variablen unser erzeugtes png Bild steckt und auf dieses soll ja unser Gleichungsstring gelegt werden! Normal werden ja Farbwerte Hexadezimal geschrieben nun in PHP geht das nicht da wird der Hexawert in drei Teilen Dezimal dargestellt! Der Rot Heawert sieht so aus ff0000 und in der Funtion so dargestellt! 255,0,0 An diese Werte kommt ihr einfach über euren System Rechner. Aller 2 Hexacode stellen wird ein Dezimalwert erstellt! Ihr habt in euren Sytem Rechnung die Funktion Hexateile in Dezimalteile umzurechnen! So und nun legen wir unseren Gleichungsstring auf das png Bild! PHP-Code: PHP: imagettftext - Manual Auch hier kommt wieder die Variable also unser erzeugtes png Bild zum Einsatz! In dieser Funtion können wir nun die Positionierung unseres Gleichungsstrings festlegen und einstellen! Ich will die einzelnen Einstellungsparameter mal kurz darstellen! 15 = Schriftgröße des Strings 3 = Schräglage des Strings (ist die Null liegt er Waagerecht) 10 = Textausrichtung links (left) 30 = Textausrichtung in der Höhe (top) So nun sind wir damit fertig und müssen nun nur noch unser Bild ausgeben! Dazu nutzen wir noch den header Content Type! PHP-Code: PHP: imagepng - Manual PHP: imagedestroy - Manual So nun das war es und das Bild und der Code für ein Captcha ist fertig. Nun müssen wir den nur noch in einem Formular einbinden und dazu kommen wir jetzt! Hier der Code der formular.php PHP-Code: Auf den Formulatteil speziell möchte ich jetzt nicht eingehen sondern nur das was das Captcha angeht! In diesem Block hier! PHP-Code: So zum Abschluss seht ihr noch wie ihr das Captcha einbinden könnt! PHP-Code: Warum eine Datei in einm img einfügen? Nun ja in dieser PHP Datei ist ja ein Bild erstellt also sie stellt auch nur ein Bild dar,darum können wir diese auch da in den src Teil einbinden! So das wars. Ich hoffel euch ein interessantes Tutorial geboten zu haben und das es euch ein wenig hilft! mfg der Litter
__________________ Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir. http://www.lit-web.de Geändert von litterauspirna (21.05.2008 um 12:19 Uhr). |
| | |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Erfahrener Benutzer | Hallo! Mit der header("Location:") hast du natürlich Recht Das Problem ist das ich das offline teste,wen ich was online Stelle mache ich das natürlich mit einer absoluten URL,dies ist mir bewust,hätte ich bei einem Tut natürlich beherzigen sollen! Nun ja über den Einsatz von Captchas lässt sich streiten und gibt es geteilte Meinungen darüber aber falsch ein solches einzusetzen ist es nicht! Und eine Gleichung die sich nur auf Addition beruht ist ja nicht schwer auszurechnen und das bei max 3 Stellen nicht wirklich ein Problem! Nun gut das mit der Funktion ist ja nun nicht falsch und wenn da deutsch und englisch zusammen gewürfelt sind such nicht wirklich schlimm! Das mit content header habe ich in der Tat vergessen und korrigiert! Aber danke für die Hinweis1
__________________ Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir. http://www.lit-web.de |
| | |
| | |||
| Neuer Benutzer Registriert seit: 20.05.2008
Beiträge: 12
![]() | Für kleinere sachen magst du recht haben, es macht aber durchaus sinn, sich von beginn weg einen sauberen Stil anzugewöhnen. Und dies erst recht bei einem Tutorial, man soll ja ein gutes Vorbild geben. Zitat:
Zitat:
Bitte lesen: WebDesign - Tips und Tricks: Captcha-Alternativen ok, rechne mir bitte 747+516 mal eben im Kopf. Da muss selbst ich meine Hirnzellen aktivieren.....ich kenne genügend Leute, die bei einer solchen Aufgabe nach spätestens 20 Sekunden aufgeben, entweder den Rechner zur Hand nehmen, oder die Internetseite einfach schliessen. | ||
| | |
| | |
| Erfahrener Benutzer | Die Gleichung lässt sich ja Problemlos auf Zweistellige Komponenten eistellen! Recht haste dreis stellige Sachen sind zu viel. Aber wieso denn unsauber programmiert? Wo denn? Und das meine die richtige Meinung ist habe ich doch gar nicht gesagt,ich sagte nur es gibt geteilte Meinungen,nicht mehr und nicht weniger!
__________________ Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir. http://www.lit-web.de |
| | |
| | |
| Supermoderator HD Registriert seit: 16.03.2008
Beiträge: 8.425
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Hallo, dein Captcha hat einen Vorteil gegenüber anderen Captchas: es ist noch nicht so weit verbreitet und wird deshalb von vielen Bots wohl missverstanden. Diese würden einfach die Zeichenfolge auf dem Bild in das Feld einfügen und das ganze absenden. Sobald deine Seite aber populärer wird oder andere diese Methode übernehmen, Bietet das Captcha keine Schutz mehr, zumal du eine gut leserliche Schrift benutzt hast. Eine Diskussion über Captchas mit gut lesbaren Schriften und wie leicht diese sich mit handelsüblichen OCR-Lösungen knacken lassen, habe ich bereits bei der Konkurrenz geführt: Gute Captchas - phpfriend.de Ich halte immer noch mehr zu den barrierefreien/-armen Varianten der Captchas. Selbst, wenn vielleicht ein Bot dran vorbeikommt, nützt ihm ein Spam-Post, in dem kein Spam stehen kann, weil alle erdenklichen Spam-Wörter gesperrt sind, herzlich wenig. Ein Verhältnis von Anzahl Links zu Anzahl Wörter, das ich erfolgreich einsetze, ist 1:20 (also 0.05). |
| | |
| | ||
| Moderator Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse: Fortgeschritten ![]() ![]() | Zitat:
Über kurz oder lang wird dei Lösung wohl darauf hinauslaufen, dass die meisten Dinge einen Login erfordern werden (z.B. über OpenID). Und die Identität muss dann eben irgendwie bestätigt sein (z.B. über PostIdent oder führende SocialNetworks wie Facebook bieten APIs dazu an die Echtheit einer Person zu bestätigen...) Aber das ist alles Zukunftsmusik und bis dahin: verwende was bei dir funktioniert.
__________________ Today you...Tomorrow me. | |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Frage zu spam bots und captcha | litterauspirna | PHP Tipps 2008 | 6 | 20.05.2008 23:56 |
| Probleme beim Einbau von Captcha | Dartgott | Trash | 2 | 24.04.2008 11:15 |
| Captcha in Website einbauen | Dartgott | PHP Tipps 2008 | 9 | 23.04.2008 15:53 |
| Captcha in bestehendes GB einbauen | ZeroQL | PHP Tipps 2008 | 6 | 08.04.2008 15:32 |
| Captcha Frage und vorstelung meiner seite | oerny18 | PHP Tipps 2008 | 10 | 31.03.2008 20:05 |
| Captcha - Session Problem | Toby | PHP Tipps 2008 | 9 | 11.03.2008 19:38 |
| Captcha? Ja, Nein oder? | stefanjann | Off-Topic Diskussionen | 12 | 20.02.2008 12:59 |
| Captcha | Adminator | Off-Topic Diskussionen | 6 | 09.09.2007 23:06 |
| mit ajax captcha neu laden und generieren | jjackisc | PHP-Fortgeschrittene | 10 | 10.08.2007 15:41 |
| Captcha unsicher? | PHP Tipps 2007 | 7 | 20.03.2007 16:10 | |
| [Erledigt] Probleme mit Einbindung Captcha | PHP Tipps 2006 | 0 | 18.08.2006 19:42 | |
| captcha | PHP Tipps 2006 | 8 | 16.06.2006 13:48 | |
| Gästebuch (inkl. Captcha) Script oder Programmierhilfe | Zuzy | Trash | 4 | 04.05.2006 07:47 |
| Gästebuch mit captcha | emerge | PHP Tipps 2006 | 8 | 01.04.2006 10:06 |
| Captcha Problem / edit: geht | PHP Tipps 2005-2 | 9 | 28.10.2005 23:14 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| recaptcha knacken, captcha selber machen, php captcha rechnen, php captcha erstellen, captcha rechnung, einfaches captcha php, einfaches php captcha, captcha php, captcha einfach, captcha selbst machen, captcha addieren, recaptcha einbinden, captcha rechnen, php sicheres captcha, sicheres captcha php, php captcha rechnung, captcha selbst erstellen, php einfaches captcha, captcha selber erstellen, captcha |