PHP IP Kontrolü

emreokan

Öğrenci
Katılım
31 Ocak 2013
Mesajlar
3
Reaksiyon puanı
0
Puanları
0
Benim bir web browser oyunum var ve aynı ipden birden fazla hesap açıldığında veya birden fazla hesapla giriş yaptığında banlanmasını veya sayfayı görememesini istiyorum.


Mysql tr1_login_log diye bir tablom var girişlerde otomatik ip ve girdiği user id (uid) alıyor.
fasa6x.png



Resimdede görebileceğiniz üzere 78.163.34.55 numaralı ip bir çok hesaba giriş yapmış.
Buna göre nasıl bir kod gerekli giriş sayfasında kontrol yapmak için? Banlanması için tr1_users diye bir tablom daha var orada uid e göre access 2 (kullanıcı) 0 (banlanmış) diye otomatik değiştirilmesi gerek.


Yardımlarınız bekliyorum, şimdiden teşekkür ederim.
 

annttiigs

Profesör
Katılım
7 Şubat 2007
Mesajlar
2,589
Reaksiyon puanı
24
Puanları
218
Bu kullanıcının internet cafe kullanıcısı olmadığı ne malum ?
Bir switch ya da modem'in arkasından gelen herkes o switch'in ekstra bir config yapılmaması durumunda external ip'sini kullanacaktır.
Yani IP'ye sahip kişiler aynı olmayabilir. Belki de aynı ortamı paylaşıyorlardır.

Aynı kişi olup olmadıklarını anlamak için biraz daha detaylı bir log kullanman gerekebilir. Hatta o bile yetmeyebilir.
 

LeaveNhA

Doçent
Katılım
4 Aralık 2011
Mesajlar
597
Reaksiyon puanı
5
Puanları
18
Bu kullanıcının internet cafe kullanıcısı olmadığı ne malum ?
Bir switch ya da modem'in arkasından gelen herkes o switch'in ekstra bir config yapılmaması durumunda external ip'sini kullanacaktır.
Yani IP'ye sahip kişiler aynı olmayabilir. Belki de aynı ortamı paylaşıyorlardır.

Aynı kişi olup olmadıklarını anlamak için biraz daha detaylı bir log kullanman gerekebilir. Hatta o bile yetmeyebilir.

kesinlikle, henüz aynı pc den gelen verilerin kayıtlayıp analiz etmeden ayırt edemiyorken bi çok sistem, valla iyi cesaret sen yorgan yakıyorsun. :D
 
S

SDN Okuru

SDN Okuru
Arkadaşlar aynı ipden 1den fazla oyuncu oynasın istemiyorum. İster internet cafe olsun ister aynı bilgisayar.. Yardım edebilecekseniz mesaj yazın lütfen.
 

annttiigs

Profesör
Katılım
7 Şubat 2007
Mesajlar
2,589
Reaksiyon puanı
24
Puanları
218
yine de dersen ki. yok arkadaş ben kesin siliyorum bu adamları diye; 2 tane select ( distinc ve count içeren ) bir tane de update lazım olacak gibi.
 

annttiigs

Profesör
Katılım
7 Şubat 2007
Mesajlar
2,589
Reaksiyon puanı
24
Puanları
218
select count(distinct uid) from login_table where ip = .....; bu sql sonucunu fetch edip değeri count'a attığını varsay.

if(count > 1 ) then
update user_table set login = 2 where uid in (select uid from login_table where ip = ... )
else
allow_user.

gibi bir şey olur zannımca.


not : login field'i user_table'de banlı mı değil mi kontrolü için kullanılmıştır. sen kendi field name'lere göre oraları düzenlemelisin.
 

emreokan

Öğrenci
Katılım
31 Ocak 2013
Mesajlar
3
Reaksiyon puanı
0
Puanları
0
Daha açıklayıcı olarak yardım edecek vamrı?
 

LeaveNhA

Doçent
Katılım
4 Aralık 2011
Mesajlar
597
Reaksiyon puanı
5
Puanları
18
Adam daha ne desin anlamadım, sen online oyuna sahipsin, böyle birde veri tabanına ve hala anlamadın mı ?
Hayır mantık basit, kullanıcıların mail adreslerinin sayısı yani eşlemeleri denetlenicek, eşleşen adresdeki hesaplar devre dışı bırakılacak...
10 puanlık uzmanlık sorusu olmaz bundan be. :@
 

LeaveNhA

Doçent
Katılım
4 Aralık 2011
Mesajlar
597
Reaksiyon puanı
5
Puanları
18
sen burda kullanıcıları oturum numarasıyla da denetleyip ip eşleşmelerini devre dışı bırakabilirsin.
 

SerdarGokcen

Asistan
Katılım
7 Nisan 2012
Mesajlar
400
Reaksiyon puanı
3
Puanları
0
Modemi resetlerse ne olacak? IP değiştirecek...

Çak bir tane cookie ve onu kontrol ettir. Tarayıcı verilerini temizlemedikçe(uyanık değilse) cookie de bir userid tutarsın ve kontrol edersin.

Ya da daha iyisi flash ile basit bir kod yazarsın flashın da kendine benzer cookie mantığı var. SharedObjects diye. Flash ı gizlersin sayfanda üye olur flash a parametre atarsın userid yi üye olduktan sonra flashparams ile o userid alınır sharedobjects de kaydedilir ve cookileri temizlese bile -flashın temizlemesi daha dertlidir- senin sitene üye olamaz.

flash kapalıysa yada banlıysa otomatikman flash yok üye olamazsın der geçersin. bak o zaman multiuser alabiliyor mu...
 

nsgnc

Profesör
Katılım
6 Nisan 2008
Mesajlar
1,572
Reaksiyon puanı
10
Puanları
218
Hiç php bilgin yok yardım istiyorsun. Adam neredeyse kodun tamamını yazmış vermiş hala yardım diye mesaj atıyorsun.
Ayrıca, doğru düzgün hesabın ile mesaj yazsana. Diğer mesajları neden misafir olarak yazıyorsun.

Kim ne yazdı belli olmuyor. Bu misafir olayı nereden çıktı bilmiyorum zaten. Açıklandığı bir konu var mı?
 

annttiigs

Profesör
Katılım
7 Şubat 2007
Mesajlar
2,589
Reaksiyon puanı
24
Puanları
218
arkadaşa özel mesaj yolu ile de bildirdim. Prensip gereği oturup da kodu editörde yazıp vermiyorum. Elinde bir parça kodun olur onun bir kısmını yazmışsındır. Takıldığın bir algoritmik ya da syntax açısından bir sıkıntıyı soruyorsundur; o zaman yardım ederiz kod da yazarız. Ama gelip burada oyun sitem var, tablolarım da şu ( ki tablo ismi falan da gayet iyi planlanmış belli ki ) diyorsun. Sonra iki tane sql sorgusunu yazamıyorsan sana ben oturup da kod yazamam.

Bu yorum Biraz sert bir mizaç ile yazılmış olsa da kesinlikle arkadaşın iyiliği için yazılmıştır.
 

uzay

Öğrenci
Katılım
14 Ocak 2010
Mesajlar
9
Reaksiyon puanı
0
Puanları
0
select count(distinct uid) from login_table where ip = .....; bu sql sonucunu fetch edip değeri count'a attığını varsay. " if(count > 1 ) then update user_table set login = 2 where uid in (select uid from login_table where ip = ... ) else allow_user. gibi bir şey olur zannımca.
not : login field'i user_table'de banlı mı değil mi kontrolü için kullanılmıştır. sen kendi field name'lere göre oraları düzenlemelisin.
PHP KONTROL panel örneklerini incele kendin sanki biraz eksik var ama yinede kullanıcı F5 e basmazsa dediğin olur. biraz azim.. daha araştır daha araştır.


bulduğun çözdüğünde ben çözdüm diyebilmen için" Ç)
 
Üst