Witam,

Otóż posiadam stronę oparta na systemie Mygad 2.0. I wszystko było by super gdyby nie fakt, że owy skrypt nie posiada żadnego lepszego zabezpieczenia przed botami, a kasowanie tysięcy bezsensowych opisów mija się z cele. Stąd chciałbym jakoś zabezpieczyć się. Jednak moje umiejętności są zbyt małe abym sobie mógł sam z tym poradzić.

Ogólnie to z tego co ustaliłem. Za dodawanie prawdopodobnie odpowiedzialne są 2 pliki:

add.php

  1. <?php
  2. // moduł odpowiedzialny za dodawanie opisów
  3.  
  4. include(PATH_FUNCTIONS.'changeTags.php');
  5.  
  6. $site->assign('cats', $db->get_results('SELECT * FROM '.PREFIX.'categories ORDER BY name ASC', ARRAY_A));
  7.  
  8.  
  9. if (isset($_POST['text'])) {
  10.  
  11.    if($_POST['catID'] == 0) {
  12.        $site->info('err', 'Musisz wybrać kategorię');    
  13.    
  14.    } else {
  15.  
  16.        if (!empty($_POST['text'])) {    
  17.            // blokada antyflood'owa jest włączona
  18.            if($site->cache('antyflood') == 1) {
  19.                if(!isset($_COOKIE['myGaD_antyflood']))
  20.                    setcookie('myGaD_antyflood', 1, time()+ $site->cache('antyflood_time'));
  21.    
  22.                if(!isset($_COOKIE['myGaD_antyflood']))
  23.                    $user->addDesc();
  24.                else
  25.                    $site->info('err', 'Błąd! Nie możesz dodać nowego opisu tak szybko po poprzednim, zaczekaj chwilę i spróbuj ponownie.');
  26.            // jeżeli nie ma blokady po prostu dodaj
  27.            } else
  28.                $user->addDesc();
  29.        } else {
  30.            $site->info('err', 'Musisz wpisać treć opisu');    
  31.        }
  32.    }
  33. }
  34. ?>


Oraz plik add.tpl

  1. {if not $done}
  2.  
  3.  
  4.  
  5. <center><div class="menu_ses">Dodaj opis</div></center><br><br>
  6.  
  7. <form action="./opisy,add.html" method="post">
  8.  
  9. <table id="tbl_powitanie">
  10. <tr>
  11. <td><b>Kategoria:</b></td>
  12. <td>
  13. <select name="catID">
  14. <option value="0">-- wybierz kategorię --</option>
  15. {foreach item=cat from=$cats}
  16. <option value="{$cat.id}" {if $cat.id eq $smarty.request.catID}selected="selected"{/if}>{$cat.name}</option>
  17. {/foreach}
  18. </select>
  19. </td>
  20. </tr>
  21. <tr>
  22. <td><b>Opis:</b></td>
  23. <td><input type="text" name="text" style="width: 350px;" maxlength="70" value="{$smarty.post.text}" /></td>
  24. </tr>
  25. <tr>
  26. <td><b>Autor:</b></td>
  27. <td><input type="text" name="author" value="{$smarty.post.author}" style="width: 350px;" maxlength="30" /></td>
  28. </tr>
  29. <tr>
  30. <td><b>KOD:</b></td>
  31. <td><img src="captcha/index.php?<?php echo session_name()?>=<?php echo session_id()?>" style="vertical-align:middle" />
  32. <input type="text" name="keystring" size="20"></td>
  33. </tr>
  34. <tr>
  35. <td></td>
  36. <td><input type="hidden" name="id" value="{$smarty.get.k}" /><input type="submit" name="submit" value="Dodaj" /></td>
  37. </tr>
  38. </table>
  39. </form> <center><br><br><b><div class="menu_se">Pamiętaj !!</div><br><br>
  40. Autor strony nie ponosi żadnej odpowiedzialnoci za treć umieszczonych tekstów,<br>są one autorstwa użytkowników oglądających tą stronę,<br>jeli naruszają one Twoje uczucia religijne,<br>obrażają Cię lub w jaki kolwiek inny sposób niezgadzasz się z ich trecią <br>poinformuj o tym administratora strony <a href="mailto:pamporek@opisy-gg.co.pl">pamporek@opisy-gg.co.pl</a> </b>
  41. {/if}


Ten drugi odpowiedzialny jest za wizualna strone - szablon.

Chciałbym w jakikolwiek sposób zabezpieczyć ten formularz aby troche zredukować ilość niechcianego spamu.

Z innego skryptu nawet załatwiłem sobie skrypt do wyświetlania obrazków Catpcha, ale nawet dodatkowe pole 2+2 by mnie uratowało. Jednak sam nie mam pojęcia - probowałem już na wiele sposobów i niestety nie działa.

Link do skryptu z moja wersja Captcha:

www.opisygadu.co.cc/captcha.rar

Z góry dziękuję za wszelkie wskazówki/pomoc i pozdrawiam