***"; // Этим словом заменятются матерные слова $blockip[]="127.0.0.3"; // Блокировка юзера по его IP-адресу $blockip[]="127.0.0.5"; // добавляйте свои строки по аналогии $blockip[]="127.0.0.8"; // и т.д. $blockname[]="Durex"; // Блокировка плохого юзера по его нику $blockname[]="Sprite"; // добавляйте свои строки по аналогии $blockname[]="Pepsi"; // и т.д. $spam[]="уебок"; // Эти слова не должны быть в комментарии $spam[]="хуй"; // если они попались, то коммент не добавится $spam[]="хуи"; // и т.д. $spam[]="х у й"; $spam[]="пизда"; //////////////////////////////////////////// Настройка закончена function Utf8ToWin($fcontents) { $out=''; $c1=''; $byte2=false; for ($c=0; $c> 2) & 5; $new_i=$new_c1*256+$new_c2; if ($new_i==1025) { $out_i=168; } else { if ($new_i==1105) {$out_i=184;} else {$out_i=$new_i - 848;} } $out .=chr($out_i); $byte2=false; } if (($i >> 5)==6) {$c1=$i; $byte2=true;} } return $out; } if (isset($_REQUEST['form'])) { $page_id=$_REQUEST['page_id']; $form=<<
Ваше имя:
Введите код Осталось 500 символов


EOD; echo $form; exit(); } if (isset($_REQUEST['add'])) { $name=Utf8ToWin(strip_tags($_REQUEST['name'])); $comment=Utf8ToWin(str_replace("\n", '
', substr(strip_tags($_REQUEST['comment']), 0, 1000))); $name=wordwrap($name,$namewrap,' ',1); $comment=wordwrap($comment,$comwrap,' ',1); $timezone=floor($timezone); if ($timezone<-12 || $timezone>12) $timezone = 0; $date=gmdate('d.m.Y', time() + 3600*($timezone+(date('I')==1?0:1))); $time=gmdate('H:i', time() + 3600*($timezone+(date('I')==1?0:1))); // $datetime=date('d.m.Y H:i'); if ($antimat==TRUE) { $pattern="/\w{0,5}[хx]([хx\s\!@#\$%\^&*+-\|\/]{0,6})[уy]([уy\s\!@#\$%\^&*+-\|\/]{0,6})[ёiлeеюийя]\w{0,7}|\w{0,6}[пp]([пp\s\!@#\$%\^&*+-\|\/]{0,6})[iие]([iие\s\!@#\$%\^&*+-\|\/]{0,6})[3зс]([3зс\s\!@#\$%\^&*+-\|\/]{0,6})[дd]\w{0,10}|[сcs][уy]([уy\!@#\$%\^&*+-\|\/]{0,6})[4чkк]\w{1,3}|\w{0,4}[bб]([bб\s\!@#\$%\^&*+-\|\/]{0,6})[lл]([lл\s\!@#\$%\^&*+-\|\/]{0,6})[yя]\w{0,10}|\w{0,8}[её][bб][лске@eыиаa][наи@йвл]\w{0,8}|\w{0,4}[еe]([еe\s\!@#\$%\^&*+-\|\/]{0,6})[бb]([бb\s\!@#\$%\^&*+-\|\/]{0,6})[uу]([uу\s\!@#\$%\^&*+-\|\/]{0,6})[н4ч]\w{0,4}|\w{0,4}[еeё]([еeё\s\!@#\$%\^&*+-\|\/]{0,6})[бb]([бb\s\!@#\$%\^&*+-\|\/]{0,6})[нn]([нn\s\!@#\$%\^&*+-\|\/]{0,6})[уy]\w{0,4}|\w{0,4}[еe]([еe\s\!@#\$%\^&*+-\|\/]{0,6})[бb]([бb\s\!@#\$%\^&*+-\|\/]{0,6})[оoаa@]([оoаa@\s\!@#\$%\^&*+-\|\/]{0,6})[тnнt]\w{0,4}|\w{0,10}[ё]([ё\!@#\$%\^&*+-\|\/]{0,6})[б]\w{0,6}|\w{0,4}[pп]([pп\s\!@#\$%\^&*+-\|\/]{0,6})[иeеi]([иeеi\s\!@#\$%\^&*+-\|\/]{0,6})[дd]([дd\s\!@#\$%\^&*+-\|\/]{0,6})[oоаa@еeиi]([oоаa@еeиi\s\!@#\$%\^&*+-\|\/]{0,6})[рr]\w{0,12}/i"; $name=preg_replace("$pattern","$conss", $name); $comment=preg_replace("$pattern","$conss", $comment); } $ipaddr=$_SERVER['REMOTE_ADDR']; $page_id=str_replace(array('\\', '//'), '', strip_tags($_REQUEST['page_id'])); $filedat=file(dirname(__FILE__)."/comments/$page_id"); $ii=count($filedat); $num=intval(($ii/4)+1); if (strtolower($_REQUEST['secpic']) !=$_SESSION['secpic']) { if (stristr($_SERVER["HTTP_ACCEPT"],"application/xhtml+xml")) {header("Content-type: application/xhtml+xml; charset=windows-1251");} else {header("Content-type: text/xml; charset=windows-1251");} $et='>'; echo "errorНе верно введен защитный код!"; exit(); } if (isset($_COOKIE['postdate'])) { if (stristr($_SERVER["HTTP_ACCEPT"],"application/xhtml+xml")) {header("Content-type: application/xhtml+xml; charset=windows-1251");} else {header("Content-type: text/xml; charset=windows-1251");} $et='>'; $lost_time=ceil(($_COOKIE['postdate']-time())/60); echo "errorВы можете добавить новое сообщение только через $lost_time мин."; exit(); } if ($comment !="") { if (stristr($_SERVER["HTTP_ACCEPT"],"application/xhtml+xml")) {header("Content-type: application/xhtml+xml; charset=windows-1251");} else {header("Content-type: text/xml; charset=windows-1251");} foreach ($blockip as $a) { if ($_SERVER["REMOTE_ADDR"]==$a) { $et='>'; echo "errorВы не можете добавлять комментарии, вас заблокировал админ!"; exit(); } } $mystring=strtoupper($comment); foreach ($spam as $a) { if (strpos($mystring, strtoupper($a))===false) { } else { $et='>'; echo "errorВаш комментарий содержит недопустимые слова!"; exit(); } } foreach ($blockname as $a) { if (strtoupper($name)==strtoupper($a)) { $et='>'; echo "errorВы не можете добавлять комментарии, вас заблокировали!"; exit(); } } } $body=<<
$name $comment $date $time | #$num EOD; if ($mailmess==TRUE) { $headers=null; $headers.="From: $name\n"; $headers.="X-Mailer: Comments v1.3\n"; $headers.="Content-type: text/plain; charset=windows-1251"; mail("$email", "Комментарий от $name", $body, $headers); } $f=fopen(dirname(__FILE__)."/comments/$page_id", 'r'); $content=fread($f, filesize(dirname(__FILE__)."/comments/$page_id")); fclose($f); $f=fopen(dirname(__FILE__)."/comments/$page_id", 'w'); fwrite($f, $body."\n".$content); fclose($f); if ($comlimit==1) { $maxline=$maxcom*4; $filedat=file(dirname(__FILE__)."/comments/$page_id"); $i=count($filedat); if ($i > $maxline) { $fp=fopen(dirname(__FILE__)."/comments/$page_id","w"); flock($fp,LOCK_EX); unset($filedat[$maxline+3], $filedat[$maxline+2], $filedat[$maxline+1], $filedat[$maxline]); fputs($fp, implode("",$filedat)); fflush($fp); flock($fp,LOCK_UN); fclose($fp); } } setcookie("postdate", time()+$timer, time()+$timer); if (stristr($_SERVER["HTTP_ACCEPT"],"application/xhtml+xml")) {header("Content-type: application/xhtml+xml; charset=windows-1251");} else {header("Content-type: text/xml; charset=windows-1251");} $et='>'; echo "success"; exit(); } if (isset($_GET['secpic'])) { $letters=array('a','b','c','d','e','f','g','h','j','k','m','n','p','q','r','s','t','u','v','w','x','y','z','2','3','4','5','6','7','9'); $colors=array('10','30','50','70','90','110','130','150','170','190','210'); $src=imagecreatetruecolor($width,$height); $fon=imagecolorallocate($src,255,255,255); imagefill($src,0,0,$fon); $fonts=array(); $dir=opendir($path_fonts); while($fontName=readdir($dir)) { if($fontName != "." && $fontName !="..") { $fonts[]=$fontName; } } closedir($dir); for($i=0;$i<$fon_let_amount;$i++) { $color=imagecolorallocatealpha($src,rand(0,255),rand(0,255),rand(0,255),100); $font=$path_fonts.$fonts[rand(0,sizeof($fonts)-1)]; $letter=$letters[rand(0,sizeof($letters)-1)]; $size=rand($font_size-2,$font_size+2); imagettftext($src,$size,rand(0,45),rand($width*0.1,$width-$width*0.1),rand($height*0.2,$height),$color,$font,$letter); } for($i=0;$i<$let_amount;$i++) { $color=imagecolorallocatealpha($src,$colors[rand(0,sizeof($colors)-1)],$colors[rand(0,sizeof($colors)-1)],$colors[rand(0,sizeof($colors)-1)],rand(20,40)); $font=$path_fonts.$fonts[rand(0,sizeof($fonts)-1)]; $letter=$letters[rand(0,sizeof($letters)-1)]; $size=rand($font_size*2.1-2,$font_size*2.1+2); $x=($i+1)*$font_size + rand(4,7); $y=(($height*2)/3) + rand(0,5); $cod[]=$letter; imagettftext($src,$size,rand(0,15),$x,$y,$color,$font,$letter); } $_SESSION['secpic']=implode('',$cod); header("Content-type: image/gif"); imagegif($src); } if (isset($_GET['page_id'])) { $f=fopen($s='comments/'.$_GET['page_id'], 'r'); $content=fread($f, filesize('comments/'.$_GET['page_id'])); fclose($f); echo $content; } if (isset($_GET['script'])) { ?> var page_id=location.pathname.replace(/\//g, '-').substr(1); if (page_id.substr(page_id.length-1, 1)=='-') { page_id=page_id+'index.html'; } $(document).ready(function() { $.ajax({ type: "GET", url: '/comments.php?form&page_id='+page_id, success: function(html) { document.getElementById('commentFormContent').innerHTML= html; $('#commentForm').submit(function() { if ($('#name').val()=='') { alert("Введите свое имя!"); return false; } if ($('#comment').val()=='') { alert("Введите текст сообщения!"); return false; } if ($('#secpic').val()=='') { alert("Введите защитный код!"); return false; } $.blockUI(); $(this).ajaxSubmit({ success: processJson, dataType: 'xml'}); return false; }); } }); $.ajax({ type: "GET", dataType: 'text', url: '/comments.php?page_id='+page_id, success: function(html) { //alert(html); showComment(html); } }); }); function showComment(content) { content = '
'+content+'


Comments v1.4'; document.getElementById('comments_div').innerHTML= content; var table = document.getElementById('comments_table'); count_page = Math.ceil(table.getElementsByTagName('tr').length/(4*20)); if (count_page > 1) { pager_content = ''; for(var i=0; i '+(i+1)+' '; } document.getElementById('comment_pager_top').innerHTML = pager_content; document.getElementById('comment_pager_bootom').innerHTML = pager_content; } showPage(1); } function showPage(page) { var table = document.getElementById('comments_table'); var trList = table.getElementsByTagName('tr'); p=page - 1; s=p*20*4; e=s+(20*4); npost=1; for (var i=0;i'; npost++; } if (ie) {trList[i].style.display='none';} else {trList[i].style.display='';} } } function processJson(answer) { result = $(answer).find('result').text(); $.unblockUI(); if (result == 'success') { $("#name").val(''); $("#comment").val(''); $.ajax({ type: "GET", url: '/comments/'+page_id+'?'+Math.random(), success: function(html) {showComment(html);} }); document.getElementById('secpic_img').src = '/comments.php?secpic&' + Math.random(); alert('Комментарий добавлен!\n\nДобавить еще один комментарий можно через пару минут!'); javascript:location.reload(); } else { error = $(answer).find('error').text(); document.getElementById('secpic_img').src = '/comments.php?secpic&' + Math.random(); $("#secpic").val(''); alert(error); } } function isNotMax(e) { e = e || window.event; var target = e.target || e.srcElement; var code=e.keyCode?e.keyCode:(e.which?e.which:e.charCode) switch (code) { case 13: case 8: case 9: case 46: case 37: case 38: case 39: case 40: document.getElementById('countchars').innerHTML=500-target.value.length; return true; } document.getElementById('countchars').innerHTML=500-target.value.length; return target.value.length < target.getAttribute('maxlength'); }