|
Če imate morda Jomlaboard, ki omogoča Guest uporabnikom objavljanje na forumu, potem vam SPAMerji sigurno serjejo po njem - četudi imate Moderator Review vklopljen, bo najmanj baza naraščala v nedogled. Rešitev, ki zaenkrat deluje moram rečt, je tukaj - do nadaljnega ;-) Najbolj enostavno je, da preprečite neprijavljenim uporabnikom objavljanje linkov. To storite tako: Odprite post.php (/components/com_joomlaboard/post.php) in najdite kodo:
if ($action=="post"){ ?> <table border="0" cellspacing="1" cellpadding="3" width="70%" align="center" class="contentpane"><tr><td> <?php $parent=(int)$parentid; $message = isset($_POST['message']) ? trim($_POST['message']) : ''; za to kodo dodajte sledečo oz. del kode morate smiselno prepisati - primerjajte kodo in vam bo takoj jasno: $http = '(http(s)?://)?'; $www = '(www\.)?'; $domain = '([a-zA-Z]((\.|\-)?[a-zA-Z0-9])*)'; $tld = '([a-zA-Z]{2,8})'; $usw = '[a-zA-Z0-9|_|-|+|.|/]*'; $regEx = $http.$www.$domain.'\.'.$tld.$usw;
if(ereg($regEx, $message)){ $checkSecurity = false; } else{ $checkSecurity = true; } if (empty($sb_authorname)) { echo _POST_FORGOT_NAME; } else if (empty($subject)) { echo _POST_FORGOT_SUBJECT; } else if (empty($message)) { echo _POST_FORGOT_MESSAGE; } else {
if ($my->id==0 && $checkSecurity==false){ echo "<center><span style='color:red'>Oprostite, neprijavljeni uporabniki ne morejo objavljati povezav!</SPAN>"; echo "<br>Kopiraj svoje sporočilo od tu spodaj, če ga želiš ponovno objaviti!"; echo "<br>-------------------------------------------------------------<br>"; echo $message; echo "<br>-------------------------------------------------------------<p>";
else{ if ($parent == 0) $thread = $parent = 0; Dodatno raven varnosti lahko ustvarite še tako da namestite CAPTCHA izziv - prepis kode iz slikice za varnostno preverjanje. Za to morate namestiti komponento SecurityImages (trenutno različica 4.1.2). Potem ko jo namestite in aktivirate, samo še dodajte sledečo kodo v isto datoteko post.php in zadeva bi morala delovati. Najdite sledečo kodo: { $checkSecurity = true; } takoj za njo dodajte to: if ($my->id==0) { include ($mosConfig_absolute_path.'/administrator/components/com_securityimages/server.php'); $checkImSecurity = checkSecurityImage($security_refid, $security_try); } Nato poiščite sledečo kodo: { echo _POST_FORGOT_MESSAGE; }
in za njo dodajte: else if ($my->id==0 && $checkImSecurity==false) { echo "Vpisali ste napačno varnostno kodo!"; echo "<br>Kopirajte vaše sporočilo od tukaj, če ga želite ponovno objaviti!"; echo "<br>-------------------------------------------------------------<br>"; echo $message; echo "<br>-------------------------------------------------------------<p>"; } Sedaj morate samo še odpreti datoteko write.html.php (tukaj je zapisano kako naj izgleda obrazec, ko hoče nekdo objaviti novo temo - ni nujno da jo daste na isto mesto kot jaz - nekam, kamor se vam di smiselno in estetsko) in poiskati kodo: {echo "<script type=\"text/javascript\">document.postform.subject.focus();</script>"; $setFocus=1;} ?> </tr> in dodati za njo: <?php if ($my->id==0) { include ($mosConfig_absolute_path.'/administrator/components/com_securityimages/client.php'); ?> <tr> <td class="sb_leftcolumn"><strong>Varnostna koda:</strong></td> <td><?php echo insertSecurityImage("security_refid"); ?><br/> <?php echo getSecurityImageText("security_try"); ?></td> </tr> <?php } ?>
Tako. Zadeva bi morala delovati. Preizkušeno deluje na Joomli 1.0.12 z Joomlaboard 1.1.5 in SecurityImages komponento 4.1.2. Spam se je zaenkrat ustavil, kako bo naprej pa bomo videli ;-) Modificiran post.php in kodo je naredil mojster Zefania, ostalo pa sem našel na strani WalterCedric. |