4images Forum & Community
4images Modifications / Modifikationen => Mods & Plugins (Releases & Support) => Topic started by: Rembrandt on November 01, 2010, 03:09:29 PM
-
Hi!
With this Modifikation can captcha mathematics, for a little bit more spammbot protection.
Captcha mathematics for Register, - Comments, and Postcards.
Demo (http://www.demo.vienna-pictures.com/contact.php)
1.) search in includes/captcha_utils.php:
function captcha_get_code() {
global $captcha_path, $captcha_chars, $captcha_wordfile, $captcha_length;
replace:
//###################### captcha mathematics start #######################
function calculation(){
global $site_sess;
$math = range(0,9);
shuffle($math);
$code = "$math[0]+$math[1]+$math[2]";
$sum = $math[0]+$math[1]+$math[2];
$site_sess->set_session_var('result', $sum);
return $code;
}
function captcha_validate_sum($result) {
global $site_sess, $captcha_enable, $user_info;
if (!$captcha_enable || $user_info['user_level'] == ADMIN) {
return true;
}
$sess_sum = trim($site_sess->get_session_var('result'));
$valid_result = $sess_sum != '' && $sess_sum == $result;
$site_sess->drop_session_var('result');
return $valid_result;
}
//###################### captcha mathematics end #########################
function captcha_get_code() {
global $captcha_path, $captcha_chars, $captcha_wordfile, $captcha_length,$captcha_calculation;
//###################### captcha mathematics start #######################
if($captcha_calculation){
return calculation();
}
//###################### captcha mathematics end #########################
2.) search in root/global.php:
$captcha_ttf = 1;
insert below:
$captcha_calculation = 1; // "0" turn off captcha mathematics
3.) search in your Template/style.css:
.input{
font-family: Tahoma,Verdana,Arial,Helvetica,sans-serif;
color: #0f5475;
font-size: 11px;
width: 230px;
}
insert below:
.input_res{
font-family: Tahoma,Verdana,Arial,Helvetica,sans-serif;
color: #0f5475;
font-size: 11px;
width: 30px;
}
4.) search in lang/deutsch/main.php:
$lang['captcha_required'] = 'Das Feld mit dem Bestätigungs-Code muss ausgefüllt werden.';
insert below:
$lang['captcha_result'] = "Ihr Ergebnis stimmt nicht, bitte versuchen Sie es noch einmal !";
$lang['captcha_desc_result'] = "Bitte tragen Sie die Rechnung aus dem Bild in das Textfeld darunter ein, und schreiben das Ergebnis rechts davon hinein.<br>Wenn Sie Probleme haben den Code zu erkennen, klicken Sie auf das Bild um ein neues zu erhalten.";
4.1.) search in lang/english/main.php:
$lang['captcha_required'] = 'Please enter the verification code.';
insert below:
$lang['captcha_result'] = "Your result is wrong, please try again !";
$lang['captcha_desc_result'] = "Please enter the code from the image into the text field below, and write the result right inside of it.<br>If you have problems identifying the image, click on it to get a new one..";
5.) For Register: search in root/register.php:
$captcha = (isset($_POST['captcha'])) ? un_htmlspecialchars(trim($_POST['captcha'])) : "";
insert below:
//###################### captcha mathematics start #######################
$result = (isset($_POST['result'])) ? intval(trim($_POST['result'])):"";
//###################### captcha mathematics end #######################
search:
if ($captcha_enable_registration && !captcha_validate($captcha)) {
$msg .= (($msg != "") ? "<br />" : "").$lang['captcha_required'];
$error = 1;
}
insert below:
//###################### captcha mathematics start #######################
if ($captcha_enable_registration && $captcha_calculation && !captcha_validate_sum($result)) {
$msg .= (($msg != "") ? "<br />" : "").$lang['captcha_result'];
$error = 1;
}
//###################### captcha mathematics end #######################
search:
"lang_captcha_desc" => $lang['captcha_desc'],
and replace:
//###################### captcha mathematics start #######################
"captcha_calculation" => (bool)$captcha_calculation,
"lang_captcha_desc" => ($captcha_calculation) ? $lang['captcha_desc_result'] : $lang['captcha_desc'],
//###################### captcha mathematics end #########################
5.1) search in your templatet/register_form.html:
<input type="text" name="captcha" size="30" value="" class="captchainput" id="captcha_input" />
and replace:
<input type="text" name="captcha" size="30" value="" class="captchainput" id="captcha_input" />{if captcha_calculation} = <input class="input_res" name="result" type="text" >{endif captcha_calculation}
6.) For Comments: search in root/details.php:
$captcha = (isset($_POST['captcha'])) ? un_htmlspecialchars(trim($_POST['captcha'])) : "";
insert below:
//###################### captcha mathematics start #######################
$result = (isset($_POST['result'])) ? intval(trim($_POST['result'])):"";
//###################### captcha mathematics end #######################
search:
if ($captcha_enable_comments && !captcha_validate($captcha)) {
$msg .= (($msg != "") ? "<br />" : "").$lang['captcha_required'];
$error = 1;
}
insert below:
//###################### captcha mathematics start #######################
if ($captcha_enable_comments && $captcha_calculation && !captcha_validate_sum($result)) {
$msg .= (($msg != "") ? "<br />" : "").$lang['captcha_result'];
$error = 1;
}
//###################### captcha mathematics end #######################
search:
"lang_captcha_desc" => $lang['captcha_desc'],
and replace:
//###################### captcha mathematics start #######################
"captcha_calculation" => (bool)$captcha_calculation,
"lang_captcha_desc" => ($captcha_calculation) ? $lang['captcha_desc_result'] : $lang['captcha_desc'],
//###################### captcha mathematics end #########################
6.1) search in your templatet/comment_form.html:
<input type="text" name="captcha" size="30" value="" class="captchainput" id="captcha_input" />
and replace:
<input type="text" name="captcha" size="30" value="" class="captchainput" id="captcha_input" />{if captcha_calculation} = <input class="input_res" name="result" type="text" >{endif captcha_calculation}</td>
7.) For Postcards: search in root/postcards.php:
$captcha = (isset($_POST['captcha'])) ? un_htmlspecialchars(trim($_POST['captcha'])) : "";
insert below:
//###################### captcha mathematics start #######################
$result = (isset($_POST['result'])) ? intval(trim($_POST['result'])):"";
//###################### captcha mathematics end #######################
search:
if ($captcha_enable_postcards && !captcha_validate($captcha)) {
$msg .= (($msg != "") ? "<br />" : "").$lang['captcha_required'];
$action = "previewcard";
$main_template = "postcard_preview";
}
insert above:
//###################### captcha mathematics start #######################
if ($captcha_enable_postcards && $captcha_calculation && !captcha_validate_sum($result)) {
$msg .= (($msg != "") ? "<br />" : "").$lang['captcha_result'];
$action = "previewcard";
$main_template = "postcard_preview";;
}
//###################### captcha mathematics end #######################
search:
"lang_captcha_desc" => $lang['captcha_desc'],
and replace:
//###################### captcha mathematics start #######################
"captcha_calculation" => (bool)$captcha_calculation,
"lang_captcha_desc" => ($captcha_calculation) ? $lang['captcha_desc_result'] : $lang['captcha_desc'],
//###################### captcha mathematics end #########################
7.1) search in your template/postcard_preview.html:
<input type="text" name="captcha" size="30" value="" class="captchainput" id="captcha_input" />
and replace:
<input type="text" name="captcha" size="30" value="" class="captchainput" id="captcha_input" />{if captcha_calculation} = <input class="input_res" name="result" type="text" >{endif captcha_calculation}</td>
mfg Andi
-
Danke Andi ...
... unter 4.1 ... insert below ... musst du den BB-Code noch richtig stellen .... ;)
Gruss mawenzi
-
Danke @mawenzi !
x mal angeschaut und doch wieder was übersehn. :)
mfg Andi
-
toller Mod, mir persönlich aber etwas zu undeutlich :wink:
aber soll ja sicher sein :thumbup:
Harald
-
toller Mod, mir persönlich aber etwas zu undeutlich :wink:
aber soll ja sicher sein :thumbup:
meinst du jetzt die lesbarkeit des codes, das sollte eigentlich nicht so sein, einen spambot ist es egal wie undeutlich der code auch ist,
aber die Usability (Benutzerfreundlichkeit) sollte nicht darunter leiden.
du könntest den code ja mit diesem [tut] http://www.4homepages.de/forum/index.php?topic=21028.msg114321#msg114321
etwas entschärfen.
mfg Andi
-
ja, einige Zahlen sind etwas undeutlich, und bin auch mit dem + und x auf dem Kriegsfuß (in der Demo)
Aber meinen Code habe ich mit dem von Detlev entschärft :wink:
Aber bei uns dürfen sowieso nur registrierte schreiben, aber wird selten genutzt :o
Aber wie gesagt, tolle Erweiterung
-
ja, einige Zahlen sind etwas undeutlich, und bin auch mit dem + und x auf dem Kriegsfuß (in der Demo)
....
ja das sind alles '+' und keine '*' :mrgreen:
ich werde wohl auch @mawenzis setting übernehmen..
mfg Andi
-
Very good idea! Thanks for sharing.
How about add subtraction (-) and multiplication (*)? ;)
function getMath()
{
$operators = array("+", "-", "*");
$count = count($operators) - 1;
do
{
$num = mt_rand(2, 4); //number of numbers in final formula
$formula = "";
while($num--)
$formula .= ($formula !== "" ? $operators[mt_rand(0, $count)] : "") . mt_rand(0, 9);
$func = create_function("", "return (" . $formula . ");" );
$compute = (int)$func();
}
while($compute < 1 || $compute > 50); //we need a simple formula, so loop until the computed number is between 1 and 50
return array($formula, $compute);
}
Also, the installation of the mod could be simplified to at least in half, if instead of calling captcha_validate_sum() function from "main" files it would be called within captcha_validate() function. With this method no additional changes required in details.php, register.php, etc
You can see what I mean in reCAPTCHA (http://www.4homepages.de/forum/index.php?topic=27551.0) mod.
-
Hi!
...How about add subtraction (-) and multiplication (*)? ;)
Thank you for the function, but i think this is no way to spambot protection.
for spambots is no relevants he can all math, only the "usability" is gone.
... if instead of calling captcha_validate_sum() function from "main" files it would be called within captcha_validate() function. ...
I have to think about it... 8O
mfg Andi
-
rated 5 stars
-
Super! :thumbup:
Наконец-то избавился от роботов-спамеров!!!
-
Danke Danke Danke :-)
hab es bei mir gleich eingefügt, ich hoffe mal, das jetzt bei mir der Kommentarspam ein Ende hat. Recaptcha hat ja kläglich versagt, und ich hatte innerhalb von 2 Tagen mehrere hunderte Spamkommentare, obwohl Kommentare nur für registrierte User möglich ist.
-
na Bitte :)
da bin ich auch gespannt, vielleicht kannst du darüber Berichten ob es geklappt hat.
mfg Andi
-
Ich habe es seit einigen Monaten, bis jetzt ist kein einziger eintrag erfolgt.
Die Akzeptanz der User ist auch vorhanden,
Danke Rembrandt :D
-
Hi!
Ich habe es seit einigen Monaten, bis jetzt ist kein einziger eintrag erfolgt.
...
mit dem hätte ich nicht gerechnet, Danke fürs Feedback.
mfg Andi
-
Servus :)
Vielen Dank für diesen Mod, evtl. ist einer von euch so nett mir einen kurzen Tip zu geben?
Bei mir funktioniert so weit alles nur wird das Image nicht angezeigt :(
da habe ich wohl Mist gebaut:
http://www.zero-talent.com/TEMP/captcha-fail.png
weiß jemand auf die schnelle wo der Fehler liegt, vielen Dank für jeden Tip
Gruß Zero
-
Willkommen im Forum!
Funktioniert das Captcha, bei den Kommentaren oder der Anmeldung?
mfg Andi
-
Danke :)
und danke für Deine Hilfe ich habe aktuell keine Useranmeldung, aber bei der Kommentarfunktion geht es nicht
-
versuche einmal diese captcha_utils.php
mfg Andi
-
Vielen Dank, das probiere ich heute Nachmittag gleich mal.
ich darf nicht gleich wieder nach mir posten, darum so
es hat geholfen :D vielen Dank für den Mod und Deine Hilfe
Tod den Spambots :twisted:
-
Hi,
ich hab dieses Captcha erfolgreich in meine Seite eingebaut,
jedoch habe ich das Problem, das ab und zu nur Aufgaben mit zwei Summanden statt drei in der Aufgabe stehen, wenn man diese dann löst ist das Ergebnis aber falsch...
Bei drei Summanden klappt alles einwandfrei...
Teilweise fehlt auch eine Zahl oder das + im bild... anbei mal ein paar screenshots als beispiele...
Bitte um Hilfe...
Installierte 4images-Version: 1.7.10
-
Naja das die nicht funktionieren können ist ja mal klar.
Als ich das gelesen habe, habe ich gefühlte 50 mal das Chaptchabild auf demo.vienna-pictures.com erneuert und es stimmte immer.
Was da bei dir schief läuft kann ich dir nicht sagen.
mfg Andi
-
Hm, werde morgen nochmal alle installationsschritte durchgehen, vielleicht hats irgendwas nicht richtig übernommen...
-
Hallo,
ich habe den Mod nun auch eingebaut, jedoch gibt es bei mir noch einen Anzeige Fehler.
Also das Captcha selbst passt.
Nur unten bei den Eingaben Felder wird in deiner Demo ein Beispiel gezeigt und aus gerechnet.
Bei mir sind beide Zeilen allerdings leer.
Was muss ich da denn ergänzen?
MFG
Nosferatu
-
Hi!
....
Nur unten bei den Eingaben Felder wird in deiner Demo ein Beispiel gezeigt und aus gerechnet.
Bei mir sind beide Zeilen allerdings leer.
Was muss ich da denn ergänzen?
...
Du brauchst nur in den entsprechenden HTML Dateieni den Input Felder einen "Value" wert reinschreiben:
1.Feld:
value=" 1 + 2 + 3 "
2.Feld:
value=" 6 "
mfg Andi
-
Danke!
LG
Jeff
-
Hi,
ich hab dieses Captcha erfolgreich in meine Seite eingebaut,
jedoch habe ich das Problem, das ab und zu nur Aufgaben mit zwei Summanden statt drei in der Aufgabe stehen, wenn man diese dann löst ist das Ergebnis aber falsch...
Bei drei Summanden klappt alles einwandfrei...
Teilweise fehlt auch eine Zahl oder das + im bild... anbei mal ein paar screenshots als beispiele...
Bitte um Hilfe...
Installierte 4images-Version: 1.7.10
vielleicht solltest du mal die Schriftarten checken..