Joomlaboard AntiSpam + Captcha

Č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.

 
< Nazaj   Naprej >


 
 

Standardi
Valid XHTML 1.0 Transitional Valid CSS

RSS kanali