• 12-09-2008, 17:33:19
    #1
    Merhaba arkadaşlar,

    detay.php adındaki sayfanın 5 ten fazla açılmasını engellemek istiyorum.
    Her kullanıcı detay.php'yi 5 taneden fazla açtığında uyarı verecek şekilde nasıl yapılır?.
  • 12-09-2008, 19:15:32
    #2
    Kurumsal PLUS
    <?php
    if($_COOKIE['detay'] == "") {
    setcookie("detay", 1, time()+31536000, "/", ".domain.com");
    } else {
    setcookie("detay", $_COOKIE['detay']+1, time()+31536000, "/", ".domain.com");
    }
    
    if($_COOKIE['detay'] > 5) {
    echo "limit doldu.";
    exit();
    }
    ?>
    cookie ile bu şekilde yapılabilir.
  • 13-09-2008, 00:19:44
    #3
    Bartuc adlı üyeden alıntı: mesajı görüntüle
    <?php
    if($_COOKIE['detay'] == "") {
    setcookie("detay", 1, time()+31536000, "/", ".domain.com");
    } else {
    setcookie("detay", $_COOKIE['detay']+1, time()+31536000, "/", ".domain.com");
    }
    if($_COOKIE['detay'] > 5) {
    echo "limit doldu.";
    exit();
    }
    ?>
    cookie ile bu şekilde yapılabilir.
    Eyvallah saol Bartuc, Hemen deneyeceğim.
    Uzun zamandır yoktun hoşgeldin.
    Önceden replemişim.
  • 13-09-2008, 23:37:50
    #4
    bu biraz olmadı, bartuc senin orda verdiğin time herhalde 1 sene
    benim tam istediğim, ziyaretçi 5 sayfa açtığında, 6. sayfayı açınca dur desin. Ziyaretçi 6. ve 5. sayfayı kapatınca 5. sayfayı yine açsın yani tüm sayfalarını da kapattığında sitede yine detay bölümünü görebilsin.
    Bu şekilde çerezlerini silene kadar dolaşamıyor.
    Dediğim şekilde sanırım online IP kontrolü ile oluyor bu şekilde bir uygulama varmı?.
  • 14-09-2008, 00:10:22
    #5
    Üyeliği durduruldu
    Sanırım 5 Adet Pencere demek istiosn dimi ?.


    Her Adrese Tıklanma için Belli Bi zaman aşımının Belirlenmesi lazım..

    Yazacağım Kod Doğru AnLamışsam İşine yarar... istediğin yeri dğeişirsin..

    Veritabanına bi tablo acman lazım..

    ziyaretcilimiti diye..

    içindeki alanlar..

    id | ip | adres | zaman -> sırasıyla INT (11) VARCHAR (30) VARHCAR (50) ve INT (11) olmalılar..


    <?php
    include ("db_baglanti.php"); //veritabanına bağlandık.
    $zamanasimi="30";   //saniye | her Pencere Kac Saniye Kayıtta tutulsun..
    $penceresayisi="5";
    $adres=$_SERVER['REQUEST_URI'];
    $ip=$_SERVER['REMOTE_ADDR'];
    $simdikizaman=time();
    $eklizaman=$simdikizaman+$zamanasimi;
    
    //Önceki Kayıtları Siliyoruz..
    mysql_query("DELETE FROM ziyaretcilimiti WHERE zaman<$time");
    
    //Gelen Ip kayıtta tutuyoruz..
    $izinliler=mysql_query("SELECT ip FROM izinliipler WHERE ip='$ip'");
    $izinliyse=mysql_num_rows($izinliler);
    
    if($izinliyse<1) {
    mysql_query("INSERT INTO ziyaretcilimiti (ip,adres,zaman) VALUES ('$ip',$adres,'$eklizaman')");}
    
    $sorgu="SELECT ip,adres,zaman FROM  ziyaretcilimiti WHERE ip='".$ip."' AND zaman>".$simdikizaman." AND adres='".$adres."'";
    $sor=mysql_query($sorgu);
    
    $say=mysql_num_rows($sor);
    
    if ($say>=$penceresayisi) {
    echo "<center>Lütfen Fazla Penceleri Kapatıp $zamanasimi Saniye Bekleyin..</center>";
    die ("day");
    }
    ?>
    Umarım İşine Yarar..
  • 14-09-2008, 00:38:56
    #6
    detay.php
    <?php
    session_start();
    $_SESSION['detay_kontrol']++;
    if($_SESSION['detay_kontrol'] >=5){
    echo '<p>Limit aşıldı. İçeriği görmek için güvenlik kodunu yazıp butona tıklayınız.</p>';
    echo '<p><form action="'.$_SERVER['REQUEST_URI'].'" method="post"><img src="guvenlik.php"><br><input type="text" name="f_guvenlik"><input type="submit" value="Gönder"></form></p>';
    
    	if($_POST[f_guvenlik] != ''){
    		if($_POST[f_guvenlik] == $_SESSION[guvenlik_kodu]){
    			unset($_SESSION[detay_kontrol]);
    			header("Location: ".$_SERVER['REQUEST_URI']);
    		}
    	}
    
    exit();
    }
    ?>
    İçeriğim
    guvenlik.php
    <?php
    session_start();
    $karakter = '012346789';
    for($i=0; $i<5; $i++){
    	$yazi .= $karakter[rand(0,strlen($karakter)-1)];
    }
    $_SESSION['guvenlik_kodu'] = $yazi;
    $img = imagecreate(45,15);
    $arkarenk = imagecolorallocate($img,255,255,255);
    $yazirenk = imagecolorallocate($img,0,0,0);
    
    imagefill($img, 0, 0, $arkarenk);
    imagestring($img, 60, 0, 0, $yazi, $yazirenk);
    header("Content-type: image/jpeg");
    imagejpeg($img);
    imagedestroy($img, NULL, 100);
    ?>
    detay.php 5 kez açıldıktan sonra limit doluyor güvenlik kodu geliyor. Güvenlik kodunu doğru girip tamam derse kaldığı yerden devam ediyor.
  • 14-09-2008, 01:22:03
    #7
    D3LLy adlı üyeden alıntı: mesajı görüntüle
    Sanırım 5 Adet Pencere demek istiosn dimi ?.
    Her Adrese Tıklanma için Belli Bi zaman aşımının Belirlenmesi lazım..
    Yazacağım Kod Doğru AnLamışsam İşine yarar... istediğin yeri dğeişirsin..
    Veritabanına bi tablo acman lazım..
    ziyaretcilimiti diye..
    içindeki alanlar..
    Umarım İşine Yarar..
    Tşkler D3LLy evet aradığım olay buydu, konuyu doğru anlamışsın, malum yeni browserlarda sekme olayı olunca her kullanıcı 20 sayfa açıyor.
    Şimdi scripti iyi bir optimize etmek için yeterli vaktimde yoktu bu tür uygulama kullanmak istedim.
    Yalnız ErsaT hocanın uygulamayıda görünce bundan vaz geçtim
    Belkide bunuda kullanırım ama ilerde işime yarayacak.
    +Rep

    ErsaT adlı üyeden alıntı: mesajı görüntüle
    detay.php

    detay.php 5 kez açıldıktan sonra limit doluyor güvenlik kodu geliyor. Güvenlik kodunu doğru girip tamam derse kaldığı yerden devam ediyor.
    ErsaT hocam tşkler döktürmüşsün herzamanki gibi.
    Bu güvenlik kodu daha mantıklı geldi, en azından mysql inde yükünü hafiletecek.

    Oyun öncesi js ile 15 saniye limit koyduk diye millet boyuna sekme açıyor anlık 10 kişi oluyor ssh den bakıyorum 10 15 sayfa açan oluyor.

    Daha önce rep vermişim olsa defalarca replerdim.
  • 14-09-2008, 01:24:43
    #8
    Üyeliği durduruldu
    Evet Session Daha Hafif Gelir akLıma geLmişti Ama.. Sayfayı 5 Defa yeniLerse süre doLar onda... yoksa ben de session yazardım :=)

    bence işine yaricak olan yine mysql ile yazdığımdır..
  • 14-09-2008, 01:31:03
    #9
    ßaron adlı üyeden alıntı: mesajı görüntüle
    Oyun öncesi js ile 15 saniye limit koyduk diye millet boyuna sekme açıyor anlık 10 kişi oluyor ssh den bakıyorum 10 15 sayfa açan oluyor.
    Eğer sorun buysa farklı çözüm ara. Örneğin 5 oyunda reklam göstert 5 den sonraki oyunlarda reklam çıkmasın. Zaten reklamı görmemek için farklı sekmede sayfa açan ziyaretçi reklamada tıklamaz. (:

    Ben içerik çeken emek hırsızlarına karşı önlem diye düşünmüştüm.

    Bu haliyle arama motoru botları siteyi 5 sayfadan sonra gezemezler. Güvenlik kodu giremeyeceği için.