PDA

Zobacz pełną wersję : Ulepszony token do AkoComment v.1.4.6



jasieq91
06-10-2008, 20:59
Miałem problem z spamem w komentarzach, gdy ustawiłem mozliwość pisania dla wszystkich uzytkowników ( w 10 min pojawiłało sie nawet 10 wpisów od botów://

dlatego przerobiłem token (obrazek z kodem do przepisania) dodając duże i male litery alfabetu oraz znaki specialne np. !?*%*

wygląda tak:
http://img224.imageshack.us/my.php?image=demosk6.jpg

i od tego czasu nie mam żadnego spamu w komentarzach:)
przetestujcie sami.

plik: img.php
kopiujemy do: components/com_akocomment

plik: admin.akocomment.php (tego nie trzeba kopiować, ale lepiej tak)
kopiujemy do administrator/components/com_akocomment

pliki:

http://odsiebie.com/pokaz/689866---5b15.html

crazyluki
07-10-2008, 05:09
AkoComment v.1.4.6 tak czy siak jest dziurawy strasznie, większość ludzi już dawno z niego zrezygnowała:-)

maslow_info
08-10-2008, 22:41
Jasieq91 - dziękuje za pomoc.
Od jakiegoś czasu szukałem podobnych rozwiązań, instalowałem boty i nic to nie dało, a z komponentu zrezygnować nie mogę, gdyż straciłbym ponad 3000 komentarzy, które są ważne dla mojego portalu.

Mam jednak prośbę.
Obrazek z kodem jest bardzo nieczytelny, a w panelu admina nie mogę zmienić tła. Chodzi mi o to, aby był jednokolorowy a nie biało - czarny - część znaków jest po prostu nieczytelna.

Problem w tym, że ..... się na tym nie znam:(

Plik img.php


<?php
/* AkoComment Spamprotection
*
* Generates the Codeimage
*
* 2005 Dominik Paulus
* @author: Dominik Paulus, mail@dpaulus.de
*/
session_start('akocomcode');
session_register('code');
$pool = '#%=+*?!0123456789abcdefghijklmnopqrstuvwxyzABCDEF GHIJKLMNOPQRSTUVWXYZ';
$img_width = 70;
$img_height = 25;
$seccode = '';
for ($i = 0; $i < 5; $i++){
$seccode .= substr($pool, mt_rand(0, strlen($pool) -1), 1);
}
$string = $seccode;
$_SESSION['code'] = $string;
$im = imagecreate($img_width, $img_height);
$bg_color = imagecolorallocate($im,163,163,163);
$font_color = imagecolorallocate($im,252,252,252);
$grid_color = imagecolorallocate($im,31,0,0);
$border_color = imagecolorallocate ($im, 174, 174, 174);
imagefill($im,1,1,$bg_color);
for($i=0; $i<1600; $i++){
$rand1 = rand(0,$img_width);
$rand2 = rand(0,$img_height);
imageline($im, $rand1, $rand2, $rand1, $rand2, $grid_color);
}
$x = rand(5, $img_width/(7/2));
imagerectangle($im, 0, 0, $img_width-1, $img_height-1, $border_color);
for($a=0; $a < 5; $a++){
imagestring($im, 5, $x, rand(6 , $img_height/5), substr($string, $a, 1), $font_color);
$x += (5*2); #odstep
}
header("Content-type: image/gif");
imagegif($im);
imagedestroy($im);
?>


Czy możesz wskazać, który fragment kodu odpowiada za tło i ewentualnie co muszę zmienić.

Liczę na pomoc, z góry dziękuje :)


Pozdrawiam

jasieq91
09-10-2008, 21:58
Ciesze sie.
też nie nie znam dobrze na tym (php) bo dopiero zaczynam sie uczyc i probowac przerabiac skrypty:D

za kolory odpowiadaja pewnie te linijki:

$bg_color = imagecolorallocate($im,163,163,163); // kolor tla
$font_color = imagecolorallocate($im,252,252,252); // kolor czcionki
$grid_color = imagecolorallocate($im,31,0,0); / kolor kratki??
$border_color = imagecolorallocate ($im, 174, 174, 174); // kolor ramki

musisz podawać kolory rgb po przecinkach

a te za rozmiary kodu:

$img_width = 70; // szerokosc w pikselach
$img_height = 25; // wysokosc w pikselach

życze powodzenia
pozdr