Mehmet Posted July 11, 2016 Share Posted July 11, 2016 Arkadaşlar php post yapan kişinin 2 den fazla post yapmasını nasıl engelleyebilirim? index.php <form action="post.php" method="post"> What is your name:<br/> <input type="text" name="names" /><br/> <label>choose a surname:</label> <select name="surname"> <option value="surname1" >Surname 1</option> <option value="surname2" >Surname 2</option> </select> </p> <input type="submit" value="Post" /> </form> post.php <html> <head> <title>PHP POST Method</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <?php if(isset($_POST['names']) && isset($_POST['surname'])) { $names = strip_tags($_POST['names']); $surname = strip_tags($_POST['surname']); $ip = $_SERVER['REMOTE_ADDR']; $veriler = $names." - ".$surname." - ".$ip." - ".date("d.m.Y")."-".date("H:i:s")."\r\n"; $dosya_adi = "log.txt"; $logdosyam=file_get_contents("log.txt"); //if (!stristr($logdosyam, $ip)){ $dosya = fopen ($dosya_adi , 'a'); fwrite ($dosya , $veriler ); fclose ($dosya); if(empty($names) || empty($surname)) { echo 'Geçersiz karakter veya hiç bir veri girilmedi!'; } else { echo 'Ok<br>' . $names . ' <br> Kod: ' . $surname; } } else { echo 'Birşeyler yanlış gitti!'; } ?> </body> </html> Quote Link to comment Share on other sites More sharing options...
abdullahTR Posted July 11, 2016 Share Posted July 11, 2016 abi sayac ile olabilir tam bir fikrim yok ama sayac 2 ye eşit olunca post etme gibi bir mantık kurdum ben 1 Quote Link to comment Share on other sites More sharing options...
blackman12 Posted July 11, 2016 Share Posted July 11, 2016 buttonun onclik evresine return true yapmak ya da butonu pasif yapmak 1. seçenek: onclick="this.disabled=true; return true;" ya da form içerisinde hidden bi checkbox ekleyip post.php de ya da formu gönderdiğin sayfada kontrol ettirmek 2. seçenek. <input type="hidden" name="submitted" id="submitted" value="true" /> <input type="submit" name="submit" id="submit" value="Submit" onclick="checkSubmit(submitted.value);" /> <script language="javascript"> function checkSubmit(submittedValue) { if(submittedValue) { //your code goes here...... document.getElementByID("submitted").value=false; } else Alert("The page was already submitted!"); } </script> ya da <?php if not (isset($_POST['submitted'])){ blabla... } ?> 1 Quote Link to comment Share on other sites More sharing options...
Mehmet Posted July 11, 2016 Author Share Posted July 11, 2016 (edited) @blackman12 senin bu yöntemin post işlemini 3 sorgu ile sınırlamak istesem işe yaramayacaktır sanırım,istediğim bu değil gibi veya ben yanlış sordum,bir ip adresi günde en fazla 2 post yapabilsin 2.gün sıfırlansın tekrar post yapabilsin Edited July 11, 2016 by Mehmet Quote Link to comment Share on other sites More sharing options...
KintaRo Posted July 11, 2016 Share Posted July 11, 2016 bunun için mysql kullanman en mantıklısı. ip ve tarih şeklinde iki sütunu olan bir tablon olur, buraya post yapanların ip lerini ve post tarihlerini girersin. SELECT COUNT(*) FROM users WHERE tarih='date("Y-m-d")' sonucu 2 ise post yapmasına izin vermezsin. ya da 1 den büyükse, 2 den küçükse şeklinde koşulları değiştirebilirsin. 2 Quote Link to comment Share on other sites More sharing options...
Mehmet Posted July 12, 2016 Author Share Posted July 12, 2016 böylemi olmalı? <?php include("config.php");//include veri tabanı bilgilerim $ip = $_SERVER['REMOTE_ADDR']; $tarih=date("Y-m-d"); if(isset($_POST['names']) && isset($_POST['surname'])) { $names = strip_tags($_POST['names']); $surname = strip_tags($_POST['surname']); if(empty($names) || empty($surname)) { echo 'Geçersiz karakter veya hiç bir veri girilmedi!'; } else { $sqlIPsor = mysql_query("SELECT COUNT(*) FROM user group by ipadres"); //$sqlTariHsor = mysql_query(SELECT COUNT(*) FROM users WHERE tarih='date("Y-m-d")'); if( mysql_num_rows($sqlIPsor) != 2 ){ $sqlekle = mysql_query("INSERT INTO users(ipadres,gun) VALUES (".$ip.",".$tarih.")") or die(mysql_error()); } } elseif { echo 'Kalan Post hakkınız 1'; } else { echo 'Bugün Kalan Post hakkınız bitti!'; } ?> Quote Link to comment Share on other sites More sharing options...
blackman12 Posted July 12, 2016 Share Posted July 12, 2016 Evet soruyu yanlış anlamışım ya da sormuşsun birazcık ben senin yine neyin peşinde olduğunu anladığımı varsayarak söylüyorum ki cache ya da html5 storage kullanmanı tavsiye ederim mysql yerine. 1 Quote Link to comment Share on other sites More sharing options...
Mehmet Posted July 12, 2016 Author Share Posted July 12, 2016 (edited) blackman12 html5 storage gerekli bilgiler tarayıcı geçmişini temizleyince siliniyor ise pek bir işime yaramaz,kısaca kullanıcı tarafından silinmeyecek. Edit:Veritabanına ip ve tarihi ekleyebildim fakat verileri koşullara göre ayarlayamadım vede kodları daha kısa tutmak istiyorum. <?php include("config.php");//include veri tabanı bilgilerim $sayi1=1; $sayi2=2; $ip = $_SERVER['REMOTE_ADDR']; $tarih=date("Y-m-d"); $sqlIPsor = mysql_query("SELECT COUNT(*) FROM tabloadim group by ipadres"); $sqlTariHsor = mysql_query("SELECT COUNT(*) FROM tabloadim group by gun"); if(isset($_POST['names']) && isset($_POST['surname'])) { $names = strip_tags($_POST['names']); $surname = strip_tags($_POST['surname']); } if(empty($names) || empty($surname)) { echo 'Geçersiz karakter veya hiç bir veri girilmedi!'; } elseif( mysql_num_rows($sqlIPsor) < $sayi1 ){ $sqlekle = mysql_query("INSERT INTO tabloadim(ipadres,gun) VALUES ('".$ip."','".$tarih."')") or die(mysql_error()); echo 'Kalan Post hakkınız 1'; } elseif( mysql_num_rows($sqlIPsor) < $sayi2 ){ $sqlekle = mysql_query("INSERT INTO tabloadim(ipadres,gun) VALUES ('".$ip."','".$tarih."')") or die(mysql_error()); echo '2.POST : Kalan Post hakkınız 0'; }else{ echo 'Kalan Post hakkınız 0'; } ?> Edited July 13, 2016 by Mehmet Quote Link to comment Share on other sites More sharing options...
snn07 Posted August 2, 2016 Share Posted August 2, 2016 Post edilen sayfada ilk olarak kullanıcının o gün yaptığı post sayısını çek. Count 2 den fazla ise hiç formu gösterme bir alert göster. Post sayısını kontrol etmek için post etmene gerek yok zaten. Quote Link to comment Share on other sites More sharing options...
gmbi Posted August 26, 2016 Share Posted August 26, 2016 Üstteki mantık hatalı (ya ofis ağındaysam?), en temizi session veya cookie aldırmak. Üyelik sistemi yoksa tabii... Üyelik sistemi varsa da her postta ´cnt´ sütununu 1 arttırırsın, 2den büyükse uyarı mesajı Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.