• 15-12-2012, 13:06:51
    #1
    Beyler bir yorum formum var. Spam korumalarına karşı bu forma nasıl 1 dakikalık süre sınırlaması koyabilirim ?

    yorumlarımın işlendiği php dosyam :

    <?php
    ob_start();
    require("inc/inc_config.php");
    $referer = @$_SERVER['HTTP_REFERER'];
    if ($referer == "")  
    {  
    header("Location: $root"."uyari/"); 
    }  
    else  
    {
    ?>
    <link rel="stylesheet" href="<?php echo $root."style.css";?>" type="text/css" />
    <?php
    if(isset($_POST["post_id"])){
    
    				$author 	=	mysql_real_escape_string(strip_tags($_POST['author']));
    				$email 		=	mysql_real_escape_string(strip_tags($_POST['email']));
    				$url 		=	mysql_real_escape_string(strip_tags($_POST['url']));
    				$comment 	=	mysql_real_escape_string(strip_tags($_POST['comment']));
    				$postid		= 	mysql_real_escape_string(strip_tags($_POST['post_id']));
    				$durum 		=	1;
    				$getip		=	ip();
    				$date 		= 	date("y-m-d");
    				$tarih 		=	turkcetarih('j F Y',$date);
    				$fark 		=	"2";
    				$saatfark 	=	(date("H") + ($fark));
    				$zaman1 	=	mktime( $saatfark, date("i"), date("s"), date("m"), date("d"), date("Y"));
    				$zaman 		=	date("H:i:s",$zaman1);
    				$yenitarih 	=	$tarih." - ".$zaman;
    				$bul 		= 	mysql_query("SELECT * FROM posts WHERE durum=1 AND id='$postid'");
    				$bulyaz		=	mysql_fetch_array($bul);
    				$yönlen		=	$root."haber/".$bulyaz["id"]."-".$bulyaz["sef"]."/";
    				if($author == "" || $email == "" || $comment == ""){
    					echo '
    					<div id="error">
    						<p>Hata. Lütfen Form'.'u Boş Doldurmayınız !<br>
    						Yönlendiriliyorsunuz.. Eğer Yönlendirmede Sıkıntı Varsa <a href="'.$yönlen.'">Tıklayınız..</a>
    						</p>
    					</div>
    					';
    					header("Refresh:1; url=$yönlen");
    					
    				}else if(!checkmail($email)){
    
    					echo '
    					<div id="error">
    						<p>Hata. Lütfen Geçerli Bir Mail Adresi Yazınız !<br>
    						Yönlendiriliyorsunuz.. Eğer Yönlendirmede Sıkıntı Varsa <a href="'.$yönlen.'">Tıklayınız..</a>
    						</p>
    					</div>
    					';
    					header("Refresh:1; url=$yönlen");
    					
    				}else{
    				$insert	= 	mysql_query("
    				INSERT INTO comments(
    				posts_id,
    				isim,
    				mail,
    				site,
    				yorum,
    				date,
    				tarih,
    				ip,
    				durum
    				)
    				values(
    				'$postid',
    				'$author',
    				'$email',
    				'$url',
    				'$comment',
    				'$date',
    				'$yenitarih',
    				'$getip',
    				'$durum'
    				)
    				");
    				if($insert){
    				$update = mysql_query("UPDATE posts SET comment=comment+1 WHERE id='$postid'");
    				}else{
    					echo '
    					<div id="error">
    						<p>Hata Oluştu. Lütfen Yorum Atmayı Daha Sonra Deneyiniz !<br>
    						Yönlendiriliyorsunuz.. Eğer Yönlendirmede Sıkıntı Varsa <a href="'.$yönlen.'">Tıklayınız..</a>
    						</p>
    					</div>
    					';
    					header("Refresh:1; url=$yönlen");
    				}
    				}
    }else{
    header("Location: $root");
    }
    }
    mysql_close();
    ob_end_flush();
    ?>
  • 15-12-2012, 13:10:27
    #2
    java ile önleyebilirsin. ilk gönderimde buton aktif sonraki gönderimde aktiflik süresini belirleyebilirsin.
    http://www.jsindir.com/Kategoriler/javascript/butonlar
    burda görmüştüm sayfaları dolaşmanda yarar var
  • 15-12-2012, 13:11:46
    #3
    mhmtknbck adlı üyeden alıntı: mesajı görüntüle
    java ile önleyebilirsin. ilk gönderimde buton aktif sonraki gönderimde aktiflik süresini belirleyebilirsin.
    http://www.jsindir.com/Kategoriler/javascript/butonlar
    burda görmüştüm sayfaları dolaşmanda yarar var
    Teşekkür ederim arkadaşım. İnceleyeceğim. Java'dan korkum var benim.

    Kullanıcının tarayıcısı java'yı reddederse diirek olarak yorumu işlediğim sayfaya gidecek..
    Bunun için php kodlarımı paylaştım
  • 15-12-2012, 13:22:30
    #4
    javascript kullanmak istemiyorsan şurda kullandığın kodu kullanabilirsin.

    header("Refresh:1; url=$yönlen");

    yönlendirebilir veya refresh edebilirsin.
  • 15-12-2012, 16:43:33
    #5
    mhmtknbck adlı üyeden alıntı: mesajı görüntüle
    java ile önleyebilirsin. ilk gönderimde buton aktif sonraki gönderimde aktiflik süresini belirleyebilirsin.
    http://www.jsindir.com/Kategoriler/javascript/butonlar
    burda görmüştüm sayfaları dolaşmanda yarar var
    CoLLeR adlı üyeden alıntı: mesajı görüntüle
    javascript kullanmak istemiyorsan şurda kullandığın kodu kullanabilirsin.

    header("Refresh:1; url=$yönlen");

    yönlendirebilir veya refresh edebilirsin.
    Kardeşim peki tamam da nasıl ben zaman sınırı koyacağım ?
    1 yorum atan 1 dakika daha bekleteceğim..
  • 15-12-2012, 16:53:28
    #6
    Kimlik doğrulama veya yönetimden onay bekliyor.
    session veya cookie kullanacaksın. sqle eklediğinde sessiona veya cookieye süreyi yazacaksın, tekrar post gelirse son tarihe bakacaksın, geçtiyse işlem yapacaksın, geçmediyse hata vereceksin.
  • 15-12-2012, 17:07:46
    #7
    samsunikinciel adlı üyeden alıntı: mesajı görüntüle
    Kardeşim peki tamam da nasıl ben zaman sınırı koyacağım ?
    1 yorum atan 1 dakika daha bekleteceğim..
    Ben yanlış anlamışım
    Şu kadar zamanda yorum yapılmazsa deaktif olsun gibi anladım


    Neyse sorunun cevabı cookie veya session kullanacaksın.
  • 15-12-2012, 17:18:29
    #8
    en garanti yöntem ip tutmaktır. form submit edilirken başarıyla sonuçlanırsa submit edenin ip adresini database e zamanı ile yazarsın. sonra her form submit edildiğinde o ip adresi için son bir dakikada kayıt olup olmadığını sorarsın, kayıt varsa reddersin, yoksa formu submit edip yeni kayıt eklersin. en son da 1dk'dan eski kayıtları silmek için bir satır eklersin ki birikmesin databasede...
  • 15-12-2012, 17:29:35
    #9
    ASP ile kullandığım kod mantığını size vereyim. Maalesef PHP bilgim dahilinde olan bir dil değildir;

    If Session("LastTime") > Hour(Time)&":"&Minute(Time)&":"&Second(Time) Then
    	Response.Write "<p style=""color:#FF0000"">Yeni bir yorum yolladınız :) Lütfen sabırlı olun.<br />" &_
    				   "3DK içinde sadece bir yorum yazılabilir!<br /><br /></p>"
    Else
    ' ....  yorum kayıt ...
    	Response.Write "<p>Teşekkürler. <em>Yorumunuz <b>admin</b> onayından sonra yayınlanacaktır!<br />" &_
    			   "<br />" &_
    			   "</p>"
    	Session("FirstTime")	= Hour(Time)&":"&Minute(Time)&":"&Second(Time)
    	Session("LastTime")		= Hour(Time)&":"&Minute(Time)+3&":"&Second(Time)
    End If
    
    	Response.Write "Son yorum: " & (Session("FirstTime")) & "<br />" & "Birdaha ki yorum: " & (Session("LastTime")) &_
    				"<br />IP Adresiniz: " & Request.ServerVariables("REMOTE_ADDR")
    Yukardaki kod ile gerekli zaman ayarının kontrolünü yaptırıyorum. Umaım bir nebze olsun faydası olur.

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 17:29:35 -->-> Daha önceki mesaj 17:28:03 --

    Ayrıca bu kodları jQuery mantığı ile veriyorum ki kişi video izliyorsa sayfa yenilemesi olmasın ve can sıkıcı bir durumla karşılaşmasın. Örneğin adam film izliyorsa sil baştan almak zorunda kalacaktır refresh yaparsanız