Szukałem modyfikacji która umożliwiła by weryfikację użytkowników czy aby nie są botami przed napisaniem jakiejś odpowiedzi lub posta. Znalazłem takiego oto moda dla v6.00.1xx
http://mods.php-f...oad_id=117
w ślad za tą modyfikacją napisałem swoją. Oto i ona :)
W trakcie publikacji nowego tematu pojawia się nowe pole w którym należy wprowadzić sumę dodawania
Jeśli źle podamy wynik wyświetli się taki komunikat:
możemy tu kliknąć wróć, spowoduje to powrót do podglądu pisanego posta wraz z już wprowadzoną przez użytkownika treścią (ot gdyby ktoś pomylił się w dodawaniu do 10).
Pole szybkiej odpowiedzi wygląda w następujący sposób:
Zaś po podaniu niepoprawnego wyniku uzyskujemy stronę z wprowadzonym tekstem i ponowną możliwość "zgadywania" wyniku:
Strona po kliknięciu w odpowiedz:
Strona po niepoprawnym podaniu wyniku tak jak w poprzednich przypadkach zawiera wprowadzoną treść:
A teraz pora na samego moda:
=================================================================
=================================================================
W pliku ./forum/postnewthread.php
=================================================================
=================================================================
znajdź:
echo "<br /></td>\n<td valign='top' class='tbl1 forum_thread_user_post'>".$previewmessage."</td>\n";
echo "</tr>\n</table>\n";
closetable();
}
}
dodaj po:
$var1 = rand(1,5);
$var2 = rand(1,5);
$equation = $var1 . " + " . $var2 . "=";
$validation_answer = $var1 + $var2;
if ($_POST['validation'] != "" && $_POST['validation'] == $_POST['validation_answer']){
=================================================================
znajdź:
} else {
redirect("postify.php?post=new&error=$error&forum_id=".$_GET['forum_id']."&thread_id=".$thread_id."");
}
}
dodaj po:
}
//Jeśli ktoś poda niepoprawną wartość otrzyma:
else if ($_POST['validation'] != $_POST['validation_answer'] && !isset($_POST['previewpost'])) {
opentable($locale['401']);
echo "<center><form id='inputform' method='post' action='".FUSION_SELF."?action=newthread&forum_id=".$_GET['forum_id']."' enctype='multipart/form-data'>\n";
echo "Podałeś nieprawidłowwy wynik.<br />";
$subject = $_POST['subject'];
$message = $_POST['message'];
echo "<input type='hidden' name='subject' value='".$subject."'>";
echo "<input type='hidden' name='message' value='".$message."'>";
echo "<input type='submit' name='previewpost' value='Wróć' class='button' />\n</center>";
closetable();
}
=================================================================
znajdź:
echo "<td class='tbl1'><textarea name='message' cols='60' rows='15' class='textbox' style='width:98%'>".$message."</textarea></td>\n";
echo "</tr>\n<tr>\n";
dodaj po:
//pokazuje pytanie z walidacją
echo "<td width='145' class='tbl2'></td><td class='tbl1'>".$equation."
<input type='text' name='validation' value='' class='textbox' style='width:250px'>
<input type='hidden' name='validation_answer' value='$validation_answer' class='textbox' style='width:250px'></td></tr>\n<tr>\n";
//end walidacja
=================================================================
=================================================================
W pliku ./forum/viewthread.php
=================================================================
=================================================================
Znajdź:
echo "<img src='".get_image("reply")."' alt='".$locale['565']."' style='border:0px' /></a>\n";
}
echo "</td>\n</tr>\n</table>\n";
}
closetable();
dodaj po:
//losowanie do weryfikacji
$var1 = rand(1,5);
$var2 = rand(1,5);
$equation = $var1 . " + " . $var2 . "=";
$validation_answer = $var1 + $var2;
//end losowanie do weryfikacji
=================================================================
znajdź:
echo "<td align='center' class='tbl1'><textarea name='message' cols='70' rows='7' class='textbox' style='width:98%'></textarea><br />\n";
echo display_bbcodes("360px", "message")."</td>\n";
echo "</tr>\n<tr>\n";
i zamień:
echo "</tr>\n<tr>\n";
na:
echo "</tr>\n";
//pole weryfikacji
echo "<td width='145' class='tbl2'> </td>\n
<td align='center' class='tbl1'>".$equation." <input type='text' name='validation' value='' class='textbox' style='width:250px'>
<input type='hidden' name='validation_answer' value='$validation_answer' class='textbox' style='width:250px'>
</td>
<tr>";
//end pole weryfikacji
echo "<tr>\n";
=================================================================
=================================================================
W pliku ./forum/postreply.php
=================================================================
=================================================================
Znajdź:
if (!defined("IN_FUSION")) { die("Access Denied"); }
Dodaj po:
$var1 = rand(1,5);
$var2 = rand(1,5);
$equation = $var1 . " + " . $var2 . "=";
$validation_answer = $var1 + $var2;
=================================================================
Znajdź:
if (isset($_POST['postreply'])) {
dodaj po:
//sprawdzenie poprawności weryfikacji
if ($_POST['validation'] != "" && $_POST['validation'] == $_POST['validation_answer']){
//end sprawdzenie poprawności weryfikacji
=================================================================
Znajdź:
else {
redirect("postify.php?post=reply&error=$error&forum_id=".$_GET['forum_id']."&thread_id=".$_GET['thread_id']."&post_id=$post_id");
}
dodaj po:
//efekt błędu
} elseif ($_POST['validation'] != $_POST['validation_answer']) {
include LOCALE.LOCALESET."forum/main.php";
opentable($locale['512']);
echo "<form name='inputform' method='post' action='".FORUM."post.php?action=reply&forum_id=".$fdata['forum_id']."&thread_id=".$_GET['thread_id']."'>\n";
echo "<table cellpadding='0' cellspacing='1' class='tbl-border center'>\n<tr>\n";
echo "<td align='center' class='tbl1'><textarea name='message' cols='70' rows='7' class='textbox' style='width:98%'>".$_POST['message']."</textarea><br />\n";
echo display_bbcodes("360px", "message")."</td>\n";
echo "</tr>\n";
//pole weryfikacji
echo "<tr>
<td align='center' class='tbl2'>".$equation." <input type='text' name='validation' value='' class='textbox' style='width:250px'>
<input type='hidden' name='validation_answer' value='$validation_answer' class='textbox' style='width:250px'>
</td>
<tr>";
//end pole weryfikacji
echo "<tr>\n";
echo "<td align='center' class='tbl2'><label><input type='checkbox' name='disable_smileys' value='1' /> ".$locale['513']."</label>";
if (array_key_exists("user_sig", $userdata) && $userdata['user_sig']) {
echo "<br />\n<label><input type='checkbox' name='show_sig' value='1' checked='checked' /> ".$locale['513a']."</label>";
}
if ($settings['thread_notify']) {
if (dbcount("(thread_id)", DB_THREAD_NOTIFY, "thread_id='".$_GET['thread_id']."' AND notify_user='".$userdata['user_id']."'")) {
$notify_checked = " checked='checked'";
} else {
$notify_checked = "";
}
echo "<br />\n<label><input type='checkbox' name='notify_me' value='1'".$notify_checked." /> ".$locale['513b']."</label>";
}
echo "</td>\n";
echo "</tr>\n<tr>\n";
echo "<td align='center' class='tbl1'><input type='submit' name='postreply' value='".$locale['514']."' class='button' /></td>\n";
echo "</tr>\n</table>\n</form><!--sub_forum_thread-->\n";
closetable();
}
//end efekt błędu
=================================================================
Znajdź:
echo "<td width='145' class='tbl2'> </td>\n";
echo "<td class='tbl1'>".display_bbcodes("99%", "message")."</td>\n";
echo "</tr>\n<tr>\n";
i zamień:
echo "</tr>\n<tr>\n";
na:
echo "</tr>\n";
//pole weryfikacji
echo "<td width='145' class='tbl2'> </td>\n
<td align='center' class='tbl1'>".$equation." <input type='text' name='validation' value='' class='textbox' style='width:250px'>
<input type='hidden' name='validation_answer' value='$validation_answer' class='textbox' style='width:250px'>
</td>
<tr>";
//end pole weryfikacji
echo "<tr>\n";
=================================================================
=================================================================
Mam nadzieję że nie będzie z tym problemów i komuś się przyda modyfikacja.
Jeśli ktoś nie modyfikował skryptu forum to w załączniku dodaje te 3 pliki spakowane zipem.
Trooll dodał/a następującą plik:
Edytowane przez Trooll dnia 28.09.2011 18:50:35
|