Web Sitesinde İp Log Tutma
-
merhaba arkadaşlar üzerinde çalıştığım bir projede php ile ip log tutmak istiyorum.
Kod vs ile ilgili bir sorunum yok. Daha önceden isteyen müşterilerime yaptığım bir sistem.
Ancak bu yapacagım projede üyelik alanlara özel ayırdığım sayfaya giren kişilerin iplerini tutacagım.
Şimdi 100 üye dediğimizde ve bu üyelre ait sayfalara anlık ortalama 100-200 online kişi girdiğinde db sürekli veri alacak veya güncellenecek bu şekilde mysql uçar.
Daha performanslı şekilde iplog nasıl tutabilirim. Bir yolu veya en iyi mantık bu diyebileceğiniz bir çözüm önerisi var mı ? -
Sessionla kontrol et ip kayıt edilip edilmediğini.
<?php
session_start();
if(!$_SESSION['kayit'] == 'kaydedildi'){
kaydet($_SERVER['REMOTE_ADDR']);//buraya artik kaydet fonksiyonu neyse o olur
}
?>
buna benzer bir şey yapman gerekecek çok zor bir şey değil.
-
http://www.dosya.tc/server37/GsaEOh/ip.rar.html
-
Hocam ipv4 olsa sorun yok aslında bi int alanda kolayca tutar, sorgularsın ama ipv6 gelince 40 karakter string alan ayırmak gerekiyor. Iot falan da düşünüp ip boyutunu baya genişlettiler çünkü yani sen yine string tutacan o ip yi
-
$ip_ip = GetIP(); @preg_match('@^(?:http://)?([^/]+)@i', $_SERVER['HTTP_REFERER'], $matches); $ip_host = $matches[1];; if(!$ip_host){$ihost = 'Direct Erişim';}else{$ihost = $ip_host;} $ip_request = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; $ip_zaman=time(); $sonuc=mysql_query("SELECT ip_id,ip_ip FROM flatcast_ip_log where ip_ip= '$ip_ip' LIMIT 1"); $varmi =mysql_num_rows($sonuc); if ($varmi == 0){ $ekle = mysql_query("insert into flatcast_ip_log set ip_ip= '$ip_ip', ip_host= '$ihost', ip_request= '$ip_request', ip_zaman= '$ip_zaman', ip_ban= 0 "); } else { $cikar = mysql_fetch_assoc($sonuc); $ipd = (int)$cikar['ip_id']; $guncelle = mysql_query("update flatcast_ip_log set ip_zaman= '$ip_zaman',ip_host= '$ihost',ip_request= '$ip_request' where ip_id='$ipd'"); }Şimdi hocalar ben bu kodu kullanıyorum kullanacagım sistem mysql db altında olacak ben perofrmans sıkıntısı çekmemek için en baştan önlemini almak istiyorum.
Bunu daha iyi bir hale getirebilirim.
-
WildWamqire bunu yazdı
$ip_ip = GetIP(); @preg_match('@^(?:http://)?([^/]+)@i', $_SERVER['HTTP_REFERER'], $matches); $ip_host = $matches[1];; if(!$ip_host){$ihost = 'Direct Erişim';}else{$ihost = $ip_host;} $ip_request = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; $ip_zaman=time(); $sonuc=mysql_query("SELECT ip_id,ip_ip FROM flatcast_ip_log where ip_ip= '$ip_ip' LIMIT 1"); $varmi =mysql_num_rows($sonuc); if ($varmi == 0){ $ekle = mysql_query("insert into flatcast_ip_log set ip_ip= '$ip_ip', ip_host= '$ihost', ip_request= '$ip_request', ip_zaman= '$ip_zaman', ip_ban= 0 "); } else { $cikar = mysql_fetch_assoc($sonuc); $ipd = (int)$cikar['ip_id']; $guncelle = mysql_query("update flatcast_ip_log set ip_zaman= '$ip_zaman',ip_host= '$ihost',ip_request= '$ip_request' where ip_id='$ipd'"); }Şimdi hocalar ben bu kodu kullanıyorum kullanacagım sistem mysql db altında olacak ben perofrmans sıkıntısı çekmemek için en baştan önlemini almak istiyorum.
Bunu daha iyi bir hale getirebilirim.
replace kullanabilirsin.
