• 20-11-2013, 19:21:56
    #1
    iyi akşamlar arkadaşlar içerik eklerken aynı başlıktan içerikleri nasıl engelleyebiliriz içerikleri zaten onaylı olarak ekliyorum daha önceden eklenmişmi bilemiyorum sütünü unique yaptığım halde yine ekliyor kod aşağıdadır


    <? }else {
      $baslik = guvenlik($_POST['baslik']);
      $kat_id = guvenlik($_POST['kat_id']);
      $aciklama = guvenlik($_POST['aciklama']);
    	if ($baslik=="" || $kat_id=="" || $aciklama=="") {
    	echo "hata";
    	exit();
    	}else {
    	$sorgu=mysql_query("insert into yazilar values ('','$kat_id','0','$baslik','$aciklama','0')");
    	if ($sorgu) {
    	  echo "OK";
    	  }else {
    	  echo "HATA";
    	  }
       }
       } 
    ?>
  • 20-11-2013, 19:29:08
    #2
    Eklemeden once basliklarda $ baslik eslesiyor mi aratin

    Note 2mden gönderdim
  • 20-11-2013, 19:30:18
    #3
    Veritabanından uniqe(benzersiz) seçerek bu kontrolün db tarafında da yapılmasını sağlayabilirsiniz.
    Yanında hemen U harfi olur zaten görürsünüz.
  • 20-11-2013, 19:58:19
    #4
    bunu php ile düzenlenmezmi arkadaşlar
  • 20-11-2013, 20:10:58
    #5
    Verileri çekerken şunu kullanır mısınız?
    SELECT DISTINCT * FROM tablo_adi
    DISTINCT kullanacaksınız yani.
    Aynı kayıtları bir defa çeker bu.Bi deneyip sonucu yazar mısınız?
  • 20-11-2013, 20:28:14
    #6
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Mantık olarak en başta veritabanınızı oluştururken verilen içeriğin birde MD5 ile kriptolanmış halini bi' sütunda tutarsanız kontrol etmeniz daha kolay olacaktır.

    Varsayalım ki posts tablomuzda hash isminde MD5 ile kriptolanmış bi' kontrol değerimiz var ve bu değeri şu şekilde oluşturalım.

    function create_hash($title) {
    		return md5(str_repeat(md5($title), 5));
    	}
    Her içerik girdiğimizde ve güncellediğimizde bu hash değerinide güncellediğimizi varsayarsak kontrol işlemlerimiz daha da kolaylaşmış olacaktır.

    Her içerik girişimizde şu şekilde bi' kontrol yaparak sorunsuzca yeni içerik girmiş olacağız.

    function create_hash($title) {
    		return md5(str_repeat(md5($title), 5));
    	}
    	
    	function add_post($title, $content) {
    		$hash = create_hash($title);
    		
    		$query = mysql_query(sprintf("SELECT `hash` FROM `posts` WHERE `hash` = '%s' LIMIT 0, 10", $hash));
    		
    		$num_rows = mysql_num_rows($query);
    		
    		if($num_rows <= 0) {
    			/*
    				İÇERİĞİ EKLE
    			*/
    		} else {
    			return false; # Bu içerik daha önceden eklenmiş gözüküyor.
    		}
    	}
  • 20-11-2013, 20:35:26
    #7
    saintx adlı üyeden alıntı: mesajı görüntüle
    Mantık olarak en başta veritabanınızı oluştururken verilen içeriğin birde MD5 ile kriptolanmış halini bi' sütunda tutarsanız kontrol etmeniz daha kolay olacaktır.

    Varsayalım ki posts tablomuzda hash isminde MD5 ile kriptolanmış bi' kontrol değerimiz var ve bu değeri şu şekilde oluşturalım.

    function create_hash($title) {
    		return md5(str_repeat(md5($title), 5));
    	}
    Her içerik girdiğimizde ve güncellediğimizde bu hash değerinide güncellediğimizi varsayarsak kontrol işlemlerimiz daha da kolaylaşmış olacaktır.

    Her içerik girişimizde şu şekilde bi' kontrol yaparak sorunsuzca yeni içerik girmiş olacağız.

    function create_hash($title) {
    		return md5(str_repeat(md5($title), 5));
    	}
    	
    	function add_post($title, $content) {
    		$hash = create_hash($title);
    		
    		$query = mysql_query(sprintf("SELECT `hash` FROM `posts` WHERE `hash` = '%s' LIMIT 0, 10", $hash));
    		
    		$num_rows = mysql_num_rows($query);
    		
    		if($num_rows <= 0) {
    			/*
    				İÇERİĞİ EKLE
    			*/
    		} else {
    			return false; # Bu içerik daha önceden eklenmiş gözüküyor.
    		}
    	}
    Peki saintx şimdi ben soru sorayım
    Birden fazla kontrolü nasıl sağlarız.Örneğin posts tablosunda x,y ve z kolonlarına göre kontrol yapacak.Üç kolondaki veri aynıysa, bunu kaydetmeyecek.
    Ben de bunu merak ettim şimdi
  • 20-11-2013, 20:45:50
    #8
    @sever2k7;
    <?php
    	
    	function check_post($x, $y, $z) {
    		$query = mysql_query(sprintf(
    			"SELECT * FROM `posts` WHERE `x` = '%s' AND `y` = '%s' AND `z` = '%s' LIMIT 0, 10",
    			$x,
    			$y,
    			$z
    		));
    		
    		$num_rows = mysql_num_rows($query);
    		
    		if($num_rows <= 0) {
    			/*
    				EKLEME İŞLEMİ
    			*/
    		} else {
    			return false; # Eşleşen kayıt bulundu. Ekleme işlemi yapılamıyor.
    		}
    	}
  • 20-11-2013, 20:58:10
    #9
    saintx adlı üyeden alıntı: mesajı görüntüle
    @sever2k7;
    <?php
    	
    	function check_post($x, $y, $z) {
    		$query = mysql_query(sprintf(
    			"SELECT * FROM `posts` WHERE `x` = '%s' AND `y` = '%s' AND `z` = '%s' LIMIT 0, 10",
    			$x,
    			$y,
    			$z
    		));
    		
    		$num_rows = mysql_num_rows($query);
    		
    		if($num_rows <= 0) {
    			/*
    				EKLEME İŞLEMİ
    			*/
    		} else {
    			return false; # Eşleşen kayıt bulundu. Ekleme işlemi yapılamıyor.
    		}
    	}
    saintx muhteşemsin.Kodu denemedim ama ilk fırsatta deneyeceğim.
    +1'i hakediyosun ama konuyu ben açmadığım için veremiyorum.
    Çok teşekkür ederim.