İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

Bir türlü mantık kuramadım.

URFALI

0
İyinet Üyesi
Katılım
30 Kasım 2010
Mesajlar
475
Reaction score
0
Konum
Mersin
Arkadaşlar sitemde ortak internet kullananlar için birşey yapmak isitiyorum herşeyi yaptım ama bir şeyde takıldım index'de giriş yaparken kontrol ettirecem ama mantık kuramadım yardim edin lütfen yapmak istediğim şey şu nasıl anlatacam daha onu bile çözemedim deneyeyim bir anlatmayı

Oyuncu giriş yaparken ip adresini alacaz tabloda o ip adresini başka biri kullanıyormu kontrol edecez başka biri kullanıyorsa başka bir tabloda bu 2 kişinin olduğu sutun varsa giriş yapacak yoksa hata verecek ama nasıl yapacam bir türlü mantık kuramadım lütfen yardım edin.

Ekleme:
PHP:
$kontrol  = mysql_num_rows(mysql_query("SELECT * FROM users WHERE r_ip='$yip' AND username!='$username'"));
$kontrol2 = mysql_num_rows(mysql_query("SELECT * FROM ortaklar WHERE hesap='$username'"));
if($kontrol > 0 && $kontrol4 == 2){
			$hatar = "Bir ip'den 2 üyelik kontrol edemezsiniz.";
		}

Yukardaki mantık'da bir sorun varmı sizce?
 

Lansewebtr

0
İyinet Üyesi
Katılım
30 Aralık 2010
Mesajlar
256
Reaction score
3
ortaklar tablosuna kimleri kayıt ediyosunuz? onu anlamadım. ortak kullanılmasına izin verdiğiniz hesaplar mı?

yani böyle olmadığı kesin ama. niye öyle bi tablo var onu çözemedim.

bu durumun en basit çözüm yolu;

hesabın ana bilgilerinin kayıt olduğu tablo da şu bilgileri kayıt ettirin;

son tık sayfa url si
son tık zamanı
son giriş zamanı
son giriş ip si
bi önceki giriş zamanı
bi önceki giriş ip si

bu sayede hem online/offline olayına açıklık getirirsin. ( son tık üzerinden 15 dakika geçmemişse kullanıcı online dır )

hemde elinde 3 tane ip olmuş olur. ( şuanki ip, son ip, sondan bi önceki ip ) bunlardan istediklerini karşılaştırıp aynıysa hata verdirtirsin.

ayrıca kullanıcı giriş yaptığında da gösterirsin bi önceki girişinizin zamanı ve ipsi diye. ( hesaba başkasının girdiğinden şüphelenirlerse diye. )

cronjobların vardır zaten. bilmiyorum kaç dakikalık ama. en çok 15 dakikalık bi cronjob da dersinki son tık zamanı 15 dakika ( 900 saniye ) geçmişse bi önceki girişin zaman ve ip bilgisini, son girişin zaman ve ip bilgisi olarak update et. kullanıcı login olduğunda da sadece son giriş zaman ve ipsini update edersin.

kullanıcı kayıt olurken de default bilgiler olarak tüm zamanlara o anki kayıt zamanını tüm ip lere aynı şekilde o anki ip yi url ye de kayıt url sini verirsin. ana sayfada eğer son url si kayıt url siyse bi beginner klavuzu verirsin :)

geç cevap verdiğim için üzgünüm. ilk yazdığında gördüm bi cevap yazdım ama göndermek nasip olmadı acele işim çıktı.

o değilde sen beni niye banladın ya :) !? ( para açığı bulan kişiyim. lanse web adına. konuşmuştuk msn de. )

demiştim ya bende mafya oyunu yazıyorum diye. facebook bağlantısı yap oyuna. tek tıkla kayıt. ben yaptım çok hoş oldu. insanın kayıt olası geliyo :)
 

URFALI

0
İyinet Üyesi
Katılım
30 Kasım 2010
Mesajlar
475
Reaction score
0
Konum
Mersin
Yok ben mantığı kavradım zaten ve senin dediklerinin hepsi var sistemde giriş yapılan tum ipler kayıt ediliyor zaten, kusura bakma hatırlamayadım seni cevabin içinde teşekkurler.
 

Lansewebtr

0
İyinet Üyesi
Katılım
30 Aralık 2010
Mesajlar
256
Reaction score
3
her girişi kayıt ettir dicektim ama bence gerek yok.

madem her giriş kayıt ediliyo. o zaman iş çok daha rahat;
giren kişinin ip si giriş yapmak istediği üyelikten başka üyelik adına kayıtlı mı ona bakılcak sadece.

bu clone üyelik hakkında cookie leri falan da kontrol eden vBulletin için yazılmış çok beğendiğim bi eklenti var AE Detector diye. onu inceleyebilirsin. Sanırım hiç kaçırmıyor.

browser oyunu yapmak için ilk başladığımda önüme 10-15 farklı browser oynu açmıştım incelemek için. senin oyunda onlardan birisiydi.

Multiple AE Detector - Login checker
PHP:
// ==================================================================

                $ignore_users = split(',', $vbulletin->options['ae_ignore_users']);
                $ignore_groups = split(',', $vbulletin->options['ae_ignore_groups']);
                
                if( !empty($vbulletin->userinfo['userid']) AND !in_array($vbulletin->userinfo['userid'], $ignore_users) AND !is_member_of($vbulletin->userinfo, $ignore_groups) )
                {
                    $idstack = lisanssız;
                    if( isset($_COOKIE['IDstack']) )
                    {
                        // check to see if multiple user history exists
                        $idstack = $_COOKIE['IDstack'];
                    }
    
                    if( empty($idstack) )
                    {
                        $idstack = ",{$vbulletin->userinfo['userid']},";
                        setcookie("IDstack", $idstack, time()+10368000, "/");
                    }
                    else
                    {
                        if(!strstr($idstack, ",{$vbulletin->userinfo['userid']},"))
                        {
                            $idstack .= ",{$vbulletin->userinfo['userid']},";
                            setcookie("IDstack", $idstack, time()+10368000, "/");
    
                            $Unums = split(",", $idstack);
                            $andids = lisanssız;
                            $numvs = 0;
                            
                            for ($i = 0; $i < (sizeof($Unums)); $i++) 
                            {
                                if( verify_id('user', $Unums[$i], FALSE, -1, -1) )
                                {
                                    if (!empty($Unums[$i]) && is_numeric($Unums[$i])) {        
                                        $checkuser = $vbulletin->db->query_first("select username from " . TABLE_PREFIX . "user where userid={$Unums[$i]}");
                                        if ( !empty($andids) ) $andids .= ",";
                                        $andids .= " [MENTION=" . $Unums[$i] . "] ". $checkuser['username'] ."[/MENTION]";
                                        $numvs++;
                                    }
                                }
                            }
                            
                            // Make sure we have at least 2 valid user violations
                            if ( $numvs < 2 ) return;
                            
                            $allowsmilie = '1';
                            $visible = '1';
                            //$message = construct_phrase($vbphrase['multiplelogin_alert'], htmlspecialchars_uni($vbulletin->userinfo['username']), $andids);
                            $message = 'Sevgili '.htmlspecialchars_uni($vbulletin->userinfo['username']).', sitemize birden fazla hesap ile bağlandığınız tespit edildi. Bu forum kurallarımıza aykırıdır.

Şuan sizden yönetim ekibimize geçerli bir açıklama sunmanız bekleniyor. Aksi halde kurallarla belirlenmiş bir cezaya mazur kalabilirsiniz.

Tespit edilen hesaplar: '.$andids.'.

Eğer bilginiz olmayan bir durumsa lütfen bizimle [URL=http://forumaio.net/iletisim.php"]iletiş[/URL]in.';

                            // get admin users
                            $adminusers = split(",", $vbulletin->options['ae_adminusers']);
                            $fromuser = fetch_userinfo($vbulletin->options['ae_sender']);
                            $subject = $vbulletin->userinfo['username'] . " için clone üyelik tespiti";
                            
                            // create the DM to do error checking and insert the new PM (needs to be here)
                            $pmdm =& datamanager_init('PM', $vbulletin, ERRTYPE_SILENT);
                            $ipaddress = $vbulletin->config['ae_adminip'];
    
                            if($vbulletin->options['ae_sendpm'] == '1')
                            {
                                $pmdm->set('fromuserid', $fromuser['userid']);
                                $pmdm->set('fromusername', $fromuser['username']);
                                $pmdm->set_info('reciept', false);
                                $pmdm->set_info('savecopy', false);
                                $pmdm->set('title', $subject);
                                $pmdm->set('message', $message);
                                $pmdm->set_recipients($vbulletin->options['ae_recipients'], $fromuser['permissions']);
                                $pmdm->set('dateline', TIMENOW);
                                $pmdm->save();
                            }
    
                            if($vbulletin->options['ae_startthread'] == '1' AND $vbulletin->options['ae_forumid'])
                            {
                                require_once(DIR . '/includes/class_dm_threadpost.php');
    
                                // setup variables
                                $forumid = $vbulletin->options['ae_forumid'];
                                $threaddm = new vB_DataManager_Thread_FirstPost($vbulletin, ERRTYPE_STANDARD);
                                    
                                // insert thread
                                $threaddm->do_set('forumid', $forumid);
                                $threaddm->do_set('userid', $fromuser['userid']);
                                $threaddm->do_set('username', $fromuser['username']);
                                $threaddm->do_set('pagetext', $message);
                                $threaddm->do_set('title', $subject);
                                $threaddm->do_set('allowsmilie', $allowsmilie);
                                $threaddm->do_set('visible', $visible);
                                $tid = $threaddm->save();
    
                                require_once(DIR . '/includes/functions_databuild.php');
                                build_forum_counters($forumid);
                            }
                        }
                    }
                }
                // ==================================================================
 

Angelo

0
İyinet Üyesi
Katılım
13 Aralık 2004
Mesajlar
9,603
Reaction score
111
Konum
AZ
PHP:
		$q = mysql_query("SELECT username FROM users WHERE r_ip='{$yip}' AND username != '{$username}' AND username NOT IN (
			SELECT hesap FROM ortaklar WHERE hesap='{$username}'
		)");
		
		if (mysql_num_rows($q) > 0) {
		/* giremez */
		}
 

URFALI

0
İyinet Üyesi
Katılım
30 Kasım 2010
Mesajlar
475
Reaction score
0
Konum
Mersin
Angele Önerin için Teşekkurler ama Şu Sorun var senin verdigin kodda
PHP:
SELECT hesap FROM ortaklar WHERE hesap='{$username}
burdaki num_rows 0'dan büyük olursa girmesi gerekli küçük olursa giremez ama genede önerin için teşekkur.er
 

Angelo

0
İyinet Üyesi
Katılım
13 Aralık 2004
Mesajlar
9,603
Reaction score
111
Konum
AZ
SELECT username FROM users WHERE r_ip='{$yip}' AND username != '{$username}' AND username NOT IN (
SELECT hesap FROM ortaklar WHERE hesap='{$username}')

Sorgusunun anlami, ipsi $yip, username i giris yapan kullanici olmayan ve ortaklarda bulunmayan kisilerin sorgusu. Dolayisiyla sifirdan buyukse girmemesi lazim. Tabi mantigi yanlis anlamadiysam.
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst