Klick-Captcha erstellen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aktivieren
auswerten
bild
code
darstellung
erstellen
farbe
geschichte
grafik
http
image
implementation
koordinate
maus
nutz
position
rand
teil
type
url
-
Ich habe auf meiner Internetseite ein Kontaktformular eingebaut und möchte das mit einem "Klick-Captcha" (ich weiß nicht, ob man das so nennt...halt ein Captcha, wo man in ein Viereck klicken muss) sichern.
Bis jetzt habe ich folgendes script, das ein bild mit kreisen und linien in zufälliger frabe und zufälliger position und ein rotes viereck mit rotem rahmen generiert:
<?php
header('Content-Type: image/png');
$bild = imageCreateTrueColor(100, 100);
$bg = imageColorAllocate($bild, 255, 255, 255);
imageFilledRectangle($bild, 0, 0, 100, 100, $bg);
for($h = 0; $h != 15; ++$h)
{
$farbe = imageColorAllocate($bild, rand(0, 255), rand(0, 255), rand(0, 127));
imageline($bild, rand(0, 100), rand(0, 100), rand(0, 100), rand(0, 100), $farbe);
imageEllipse($bild, rand(10, 90), rand(10, 90), rand(10, 20), rand(10, 20), $farbe);
}
$rTr = imageColorAllocateAlpha($bild, 255, 0, 0, 64);
$r = imageColorAllocate($bild, 255, 0, 0);
$arr = array(rand(0, 60), rand(0, 60));
$arr[2] = $arr[0]+rand(20, 40);
$arr[3] = $arr[1]+rand(20, 40);
imageFilledRectangle($bild, $arr[0], $arr[1], $arr[2], $arr[3], $rTr);
imageRectangle($bild, $arr[0], $arr[1], $arr[2], $arr[3], $r);
imagePNG($bild);
imageDestroy($bild);
?>
Wie kann ich es hinkriegen, dass man erst weiterkommt (bei mir eben die nachricht abschickt), wenn man in das rote viereck geklickt hat, bzw, dass das captcha bei klick an eine andere stelle neu geladen wird?
Vielen Dank schon mal -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Nachdem Du mit PHP die Grafik erstellt hast und für die Darstellung unter HTML eingebunden hast, brauchst Du nur noch ein passendes "map" dazu zu erstellen. Das ist eine ganz alte HTML-Methode, mit der man Teile einer Bildes in Links verwandeln kann. Ich weiß nicht, ob es sowas auch als CSS-Implementation gibt (wahrscheinlich ...), aber die HTML-Geschichte funktioniert ja auch so!
Schau mal hier nach: http://de.selfhtml.org/html/grafiken/verweis_sensitive.htm
Beitrag zuletzt geändert: 5.2.2010 21:21:50 von cars-ten -
cars-ten schrieb:
Nachdem Du mit PHP die Grafik erstellt hast und für die Darstellung unter HTML eingebunden hast, brauchst Du nur noch ein passendes "map" dazu zu erstellen. Das ist eine ganz alte HTML-Methode, mit der man Teile einer Bildes in Links verwandeln kann. Ich weiß nicht, ob es sowas auch als CSS-Implementation gibt (wahrscheinlich ...), aber die HTML-Geschichte funktioniert ja auch so!
Schau mal hier nach: http://de.selfhtml.org/html/grafiken/verweis_sensitive.htm
Was hat das dann noch mit einem Captcha zu tun?
Damit es auch ein Captcha bleibt, muss du via JavaScript herausfinden an welcher Koordinate die Maus war, als geklickt wurde.
Diese Position schickst du nun via Ajax an dein PHP Script, welches dann auswerten muss, ob der Klick richtig war, oder daneben. -
Öhmmmm, ...
da hast Du natürlich Recht! Wenn der weiterführende Link dann auch schon im html-Code steht, kann natürlich jeder Robot diesem Link folgen. Sorry für meine "mentale Entgleisung"!
Habe jetzt nicht die Zeit, Dir eine ausgearbeitete andere Alternative vorzustellen, aber ich weiß - habe es selbst schon angewendet! - , dass es mit jQuery extrem einfach ist, die Mausposition (und die Position des Bildes selbst) herauszufinden, die Du bei einem Click auf einem Bild hattest. Ich weiß, ich wiederhole mich mit meinen jQuery-Hinweisen (auch in anderen Freds), aber diese Library ist wirklich das geilste, was ich in den letzten Jahren zu JavaScript gefunden habe!
http://jquery.com
Du musst das Click-Event auf das Bildchen abfangen und damit Deinen Ajax-Aufruf generieren.
[[Damit gehört dieser Beitrag jetzt eigentlich in den JavaScript-Fred]]
Beitrag zuletzt geändert: 6.2.2010 11:32:49 von cars-ten -
Damit es auch ein Captcha bleibt, muss du via JavaScript herausfinden an welcher Koordinate die Maus war, als geklickt wurde.
Diese Position schickst du nun via Ajax an dein PHP Script, welches dann auswerten muss, ob der Klick richtig war, oder daneben.
Toll, und ich darf dann JS aktivieren, nur um durch die Captcha zu kommen? Nutze ein input type="image". Du bekommst du Koordinaten, wo das Bild geklickt wurde dann. -
nikic schrieb:
Damit es auch ein Captcha bleibt, muss du via JavaScript herausfinden an welcher Koordinate die Maus war, als geklickt wurde.
Diese Position schickst du nun via Ajax an dein PHP Script, welches dann auswerten muss, ob der Klick richtig war, oder daneben.
Toll, und ich darf dann JS aktivieren, nur um durch die Captcha zu kommen? Nutze ein input type="image". Du bekommst du Koordinaten, wo das Bild geklickt wurde dann.
WTF? Das wäre mir wirklich sehr neu.
Hast du irgendwelche Beispiele etc.? Habe via Google nichts dergleichen gefunden. -
Hallo lucas9991!
siehe: http://de.selfhtml.org/html/formulare/formularbuttons.htm#grafische
Kleines Beispiel:
<pre> <?php print_r($_REQUEST); ?> </pre> <form method="POST" action=""> <input type="image" src="./bild.png" name="Name" value="Wert" /> </form>
Ausgabe zb:
<pre> Array ( [Name_x] => 86 [Name_y] => 84 [Name] => Wert ) </pre> <form method="POST" action=""> <input type="image" src="./bild.png" name="Name" value="Wert" /> </form>
Funktioniert mit method="GET" natürlich auch. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage