IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası
  sohbet

 Kayıt ol  Topluluk
Yeni Konu aç Konu Kapatılmıştır
 
LinkBack Seçenekler Stil
Alt 17 Kasım 2007, 19:15   #1
Nickolas
Guest
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Yüzdesi:(%)
IRC 'deki Kullanıcı Sayısını Veri tabanına Göndermek




Kullanımı oldukça basit. Minimum mIRC 6.2 üzerine "MIRC KODU" Başlıklı Satırdaki Kodları Load ediyorsanuz. Kod Kendini 60 Saniyede bir otomatik olarak çalıştıracaktır. İlk açılışta Belirli Bilgileri Girmeniz gerekiyor...

Daha sonrasında da ftp ye import.php 'yi atıyorsunuz. import.php 'de de belirli açıklamalarla sizden bilgiler isteyecektir. Onları da girdikten sonra Kullanıma hazır.

Botu düzenleyip bazı kişilerin elinde oyuncak olmamanız için 2 Güvenlik önlemi koydum. Bunlar;

1- Security Password. Güvenlik Şifresini Hem mIRC Kodundaki Satıra hem de import.php 'ye girdiğinizde sadece bu şifreden gelen bilgileri uygulayacaktır.

2- Kabul Edilebilir IP. Eğer Statik IP Kullanıyorsanız ya da Bir Server Üzerinden Kullanıma açtıysanız Bu IP 'leri virgülle sıralayın. import.php Yalnızca o IP 'lerden gelen verileri takip edecektir...

Şunu da bilmenizi isterim ki. PHP Kodlarını da, mIRC Kodlarını da Geliştirilebilir Bir Sistem çıkarttım. Vizelerim bittiğinde belki devam ederiz :p
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.


Her İki Koduda Rar lı bir şekilde Ekten İndirebilirsiniz.

import.php Kodları

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
<?php /*-------------------------------------------------------------*\ | _____________________________________________________________ | |// \\| |||---------- Bu Script PHP ile Kodlanmıştır -----------------||| |||----- Script, Özel İsteğe Göre Sıfırdan Dizayn Edildi -----||| |||------------------- Nickolas ------------------------------||| |\\__________________________________________________________// | | | \*-------------------------------------------------------------*/ // ############################################################## // Script Ayarları... $config = array(); /********************* * * * GÜVENLİK AYARLARI * * * *********************/ // Scripti Düzenleyip de Alay Konusu olmamak için Bir Güvenlik Şifresi // Kullanmayı uygun gördük. Aynı Şifreyi Botun Config Satırlarında da Kullanmanız gerekiyor. // Lütfen Sadece a-z, A-Z ve 0-9 Karekter Aralıklarını kullanın... (Türkçe Karekter Hariç) $config['Security']['Password'] = ''; // Eğer İsterseniz Belirli IP Adreslerini Sıralayarak Yalnızca Bu IP Adreslerinden Gelen Bilgileri Kabul Ettirebilirsiniz... // Örnek: 123.123.123.123, 127.0.0.1, 127.0.0.2 $config['Security']['OnlyIps'] = ''; /************************ * * * VERİ TABANI AYARLARI * * * ************************/ $config['MySQL']['DbName'] = ''; // Veri Tabanınızın Adı... $config['MySQL']['Server'] = 'localhost'; // Veri Tabanınızın Sunucu IP Adresi... $config['MySQL']['Port'] = '3306'; // MySQL Server Bağlantı Portu. Standard olarak 3306 'dır. $config['MySQL']['Username'] = ''; // MySQL Server Veri Tabanı Bağlantısı için Kullanıcı Adı $config['MySQL']['Password'] = ''; // MySQL Server Veri Tabanı Bağlantısı için Şifre $config['MySQL']['Usept'] = false; // Devamlı Bağlantı Bağlantı kullanmak istiyorsanız (mysql_pconnect) Burayı true yapın. $config['MySQL']['Charset'] = ''; // Eğer MySQL v4.1+ Kullanıyor ve de Türkçe Karekter Problemi Oluşursa Buraya latin5 Değerini Girin. $config['MySQL']['ForceSQL'] = false; // Eğer MySQL v4.1+ Kullanıyorsanız Lütfen Burayı true yapın... // ############################################################ // Bazı Fonksiyonlar... function print_error($errorphrase) { global $is_mircbot; if ($is_mircbot) { echo "\n$errorphrase\n"; exit; } trigger_error(fetch_error($errorphrase), E_USER_ERROR); } function fetch_error($phrase) { switch ($phrase) { case 'mysql_field_missing': $text = "Lutfen \$config Alanlarindaki DbName, Server, Username ve Password Kisimlarini Girin"; break; case 'connection_link_not_found': $text = "MySQL Bağlantı Linki Bulunamadı..."; break; case 'sql_error': $text = "SQL Hatası"; break; case 'mysql_couldnt_connect': $text = "MySQL Sunucuna Bağlanılamadı"; break; case 'db_not_found': $text = "MySQL Veri Tabanı Bulunamadı"; break; case 'couldnt_create_table': $text = "Ana Tablo Oluşturulamadı"; break; case 'not_valid_ip': $text = "Üzgünüm! IP Adresiniz Kabul Edilebilir IP 'ler Arasında Değil..."; break; case 'wrong_password': $text = "Yanlış Şifre!"; break; default: $text = "Bilinmeyen Hata!"; } return $text; } // SELECT ile Kullanılan SQL Kodları için... function mysql_query_read($sqlcode, $connection = NULL) { if ($connection === NULL) { global $connection_link; if ($connection_link == NULL) { print_error('connection_link_not_found'); } $connection =& $connection_link; } if (!($result = @mysql_query($sqlcode, $connection))) { print_error('sql_error'); } return $result; } // UPDATE, DELETE ile Kullanılan SQL Kodları için // Yukarıdaki Fonksiyondan Farkı Herhangi bir sonuca dönmüyor... function mysql_query_write($sqlcode, $connection = NULL) { if ($connection === NULL) { global $connection_link; if ($connection_link == NULL) { print_error('connection_link_not_found'); } $connection =& $connection_link; } if (!@mysql_query($sqlcode, $connection)) { print_error('sql_error'); } } $input = NULL; define('TYPE_STR', 2); // String Type define('TYPE_INT', 4); // Integer Type define('TYPE_UINT', 8); // Universal Integer Type define('TYPE_BOOL', 32); // BOOLEAN Type define('TYPE_ARRAY', 64); // Array Type clean_input('g', 'd', TYPE_INT); function clean_input($shortglobal, $datavar, $type = TYPE_STR) { global $input; if (!in_array($shortglobal, array('p', 'r', 'g'))) { return null; } switch ($shortglobal) { case 'p': $data = $GLOBALS["_POST"]["$datavar"]; break; case 'r': $data = $GLOBALS["_REQUEST"]["$datavar"]; break; case 'g': $data = $GLOBALS["_GET"]["$datavar"]; break; } switch ($type) { case TYPE_STR: $data = trim(strval($data)); break; case TYPE_INT: $data = (($tempdata = intval($data)) ? $tempdata : 0); break; case TYPE_UINT: $data = ((($tempdata = intval($data)) > 0) ? $tempdata : 0); break; case TYPE_BOOL: $data = $data ? 1 : 0; break; case TYPE_ARRAY: $data = (is_array($data) ? $data : array()); break; default: $data = null; } $input->GPC["$datavar"] = $data; return $data; } function clean_input_array($shortglobal, $datas) { if (!is_array($datas)) { return; } foreach ($datas AS $input => $data) { clean_input($shortglobal, $input, $data); } } // ############################################################# // Script Başlangıcı, Süper Global Düzenlemeleri... if (@ini_get('register_globals')) { @ini_set('register_globals', 0); // Register Globals Özelliğini en başından beri gereksiz bulmuşumdur :) } $is_mircbot = $_SERVER['HTTP_USER_AGENT'] == 'Lusers Updater via Nickolas' ? true : false; if (strtolower($_SERVER['REQUEST_METHOD']) !== 'post' OR $is_mircbot === false) { exit; } if (!empty($config['Security']['OnlyIps'])) // Kabul edilebilir IP Tanımlanmış. Bakalım IP 'ler Formata Uygun mu... { $validips = array(); $ips = split(',', $config['Security']['OnlyIps']); foreach ($ips AS $ip) { $notvalidip = false; if (($ip = trim($ip)) AND preg_match('#(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})#', $ip, $result)) { for ($i = 0; $i <= 3; $i++) { if ($result[$i] > 255 OR $result[$i] < 0) { $notvalidip = true; break; } } if ($notvalidip === false) { $validips[] = $ip; } } } if (!in_array($_SERVER['REMOTE_ADDR'], $validips)) // IP Kabul edilebilir IP 'ler Arasında değil. Bu nedenle... Error! { print_error('not_valid_ip'); } } clean_input_array('p', array('securitypassword' => TYPE_STR, 'usernumbers' => TYPE_UINT)); if (!empty($config['Security']['Password'])) { $securitypassword = preg_replace('#([^a-zA-Z0-9]*)#', '_', $config['Security']['Password']); // Kabul Edilebilir Formata Alıyoruz. if (!empty($securitypassword) AND $input->GPC['securitypassword'] !== $securitypassword) { print_error('wrong_password'); } } // ############################################################ // MySQL Açılış Kodları... if (empty($config['MySQL']['DbName']) OR empty($config['MySQL']['Username']) OR empty($config['MySQL']['Password']) OR empty($config['MySQL']['Server'])) { print_error('mysql_field_missing'); } $mysql_connect = $config['MySQL']['Usept'] ? 'mysql_pconnect' : 'mysql_connect'; $mysql_port = $config['MySQL']['Port'] ? $config['MySQL']['Port'] : 3306; $mysql_server = $config['MySQL']['Server'] . ":" . $mysql_port; $escape_string = function_exists('mysql_real_escape_string') ? 'mysql_real_escape_string' : 'mysql_escape_string'; if (!($connection_link = @$mysql_connect($mysql_server, $config['MySQL']['Username'], $config['MySQL']['Password']))) { print_error('mysql_couldnt_connect'); } if (!@mysql_select_db($config['MySQL']['DbName'], $connection_link)) { print_error('db_not_found'); } if ($config['MySQL']['ForceSQL']) { @mysql_query("SET @@sql_mode = ' '", $connection_link); } if (!($lusers = @mysql_query("SELECT lusersid FROM lusers LIMIT 1", $connection_link))) { if (mysql_errno() == 1146) // Hımm.. Tablo Mevcut değil. Sanırım ilk açılıştı bu. Biz de Yeni Bir Tablo oluşturalım. { $create = @mysql_query(" CREATE TABLE lusers( lusersid INT UNSIGNED NOT NULL AUTO_INCREMENT, lusers INT(5) NOT NULL DEFAULT '0', PRIMARY KEY(lusersid) );", $connection_link); if (!$create) { print_error('couldnt_create_table'); } @mysql_query("INSERT INTO lusers(lusersid, lusers) VALUES(1, 0)", $connection_link); $lusers['lusersid'] = 1; } } else { $lusers = mysql_fetch_array($lusers, MYSQL_ASSOC); } if (!empty($input->GPC['usernumbers'])) { // Buraya Kadar Herşey Başarılı... eee Bize de Tabloya veriyi yazmak düşer:P mysql_query_write(" UPDATE lusers SET lusers = " . $escape_string($input->GPC['usernumbers']) . " WHERE lusersid = $lusers[lusersid]", $connection_link); if ($is_mircbot) { echo "\nprocess_success\n"; } else { echo "Başarıyla Güncellendi..."; } } @mysql_close($connection_link); ?>

MIRC KODLARI
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
on *:START: { ; ------------------------------------------------------------------------------------------------------------- ; Bu kısma IP ya da Host Adını ve Port yazın. Eğer Host adı yazacaksanız [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] 80 şeklinde yazın. _setcfg host [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] 80 ; IRC Adresini ve Portunu yazın _setcfg ircserver irc.server.com 6667 ; Eğer Güvenlik Şifresi Tanımladıysanız "; _setcfg password" Satırındaki Noktalı Virgülü Kaldırın ve Bir Değer girin ; Unutmayın a-z, A-Z, 0-9 Değerleri girmelisiniz. Türkçe Karekter Girmeyin... ; _setcfg password ; ------------------------------------------------------------------------------------------------------------- ; ------- SCRIPTIN BU SATIRINDAN İTİBAREN DÜZENLEMEYİN ---------------- _adderror mysql_field_missing Lutfen \$config Alanlarindaki DbName, Server, Username ve Password Kisimlarini Girin _adderror connection_link_not_found MySQL Bağlantı Linki Bulunamadı... _adderror sql_error SQL Hatası _adderror mysql_couldnt_connect MySQL Sunucuna Bağlanılamadı _adderror db_not_found MySQL Veri Tabanı Bulunamadı _adderror couldnt_create_table Ana Tablo Oluşturulamadı _adderror not_valid_ip Üzgünüm! IP Adresiniz Kabul Edilebilir IP 'ler Arasında Değil... _adderror wrong_password Yanlış Şifre! .timer.start 0 1 connectirc ; Uygun Format Dışında Geldiği İhtimaline Göre Yeniden Yazdırıyoruz. if ($_cfg(password)) _setcfg password $regsubex($_cfg(password), /([^0-9]*)/gi, $null) } alias _setcfg hadd -m config $1 $2- alias _cfg return $hget(config, $1) alias _adderror hadd -m errors $1 $2- alias _geterror return $hget(errors, $1) alias sw { if (!@window(SOCK)) window -e @SOCK aline @SOCK $1 - $2- sockwrite -nt $1 $2- } alias connectirc if (!$sock(updatebot)) sockopen updatebot $_cfg(ircserver) alias trim return $regsubex($1-, /^\s+|\s+$/g, $null) alias escape_unnumber return $regsubex($1-, /([^0-9]*)/gi, $null) alias build_query { var %sock = $1 var %data = usernumbers= $+ $escape_unnumber($trim($_cfg(usernumbers))) if ($_cfg(password)) %data = securitypassword= $+ $_cfg(password) $+ & $+ %data sw %sock POST /import.php?s= $+ $r(58478946654, 54613564554564654) HTTP/1.1 sw %sock Host: $gettok($_cfg(host), 1, 32) sw %sock User-Agent: Lusers Updater via Nickolas sw %sock Content-type: application/x-
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
sw %sock Content-Length: $len(%data) sw %sock Connection: close sw %sock sw %sock %data } on *:SOCKOPEN:updatebot: { var %bot = updatebot_ $+ $r(100, 9999) sw $sockname NICK %bot sw $sockname USER SiteBot "" " $+ $iif($host, $host, $ip) $+ " : $+ Kullanıcı Sayısı Güncelleyici Bot } on *:SOCKREAD:updatebot: { var %b sockread %b tokenize 32 %b if (!@window(IRCDEBUG)) { window -e @IRCDEBUG } aline @IRCDEBUG DEGUG - %b if ($1 == PING) sw $sockname PONG $2 if ($2 == 002) .timer.sockwrite 0 60 sw updatebot lusers if ($regex($1-, /^:updatebot_([0-9]{3,4})\sMODE\supdatebot_([0-9]{3,4})\s:\+i.*$/i)) sw $sockname join #2,00 if ($2 == 265) { if ($regex(local, $4-, /^:([^:]*):\s(\d*)\s([^:]*):\s(\d*)/)) { var %local = $regml(local, 2) var %max_local = $regml(local, 4) ; Burada Hangisini Yollamak istiyorsan Onu göndert :P %local dersen Local Users Gider _setcfg usernumbers %local $update_site } } } alias update_site sockopen sender $_cfg(host) on *:SOCKOPEN:sender: build_query $sockname on *:SOCKREAD:sender: { var %b sockread %b if (!@window(DEBUG)) { window -e @DEBUG } tokenize 32 %b aline @DEBUG DEBUG - %b if ($1 == process_success) echo -a Başarıyla Güncellendi... elseif ($_geterror($1)) echo -a HATA: $_geterror($1) }



Konu Nickolas tarafından (12 Ocak 2008 Saat 10:49 ) değiştirilmiştir.
 

IRCForumlari.NET Reklamlar
sohbet odaları sohbet odaları Benimmekan Mobil Sohbet
Alt 31 Ocak 2008, 11:18   #2
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: IRC 'deki Kullanıcı Sayısını Veri tabanına Göndermek




Nickolas güzel bir çalışma olmuş lakin. Benim başka bir isteğim olacak.

Kanalda op var ise online op yok ise offline şeklinde veriyi aktarmasını nasıl sağlayabilirim.

Ve bunu 60 saniyede otomatik değil op kanala girdiğinde otomatik yapsın. Ve çıktıgında :s

 

Alt 31 Ocak 2008, 12:59   #3
Nickolas
Guest
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Yüzdesi:(%)
Cevap: IRC 'deki Kullanıcı Sayısını Veri tabanına Göndermek




verdiğim kod düzenlenebilir fakat... isteğin için bu kodu yazdığım zamanlardaki kadar boş vaktim yok
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
Boş vakit bulduğumda yazarım emin ol

 

Alt 31 Ocak 2008, 19:00   #4
khazadum
Guest
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Yüzdesi:(%)
Cevap: IRC 'deki Kullanıcı Sayısını Veri tabanına Göndermek




oo döktürmüşsün yine abi ;love ellerine sağlık. Biraz oynayalım :p

 

Alt 23 Ağustos 2010, 01:24   #5
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: IRC 'deki Kullanıcı Sayısını Veri tabanına Göndermek




Bu Sistemi güzelce daha geniş kapsamda yapacak birileri olsa güzel olabilir bence.

 

Konu Kapatılmıştır

Etiketler
deki, gondermek, göndermek, irc, kullanici, kullanıcı, sayisini, sayısını, tabanina, tabanına, veri


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Kapalı
Pingbacks are Açık
Refbacks are Açık


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
Atalay, Türkiye'deki Suriyeli sayısını açıkladı Seth Haber Arşivi 1 22 Ağustos 2014 21:07
Google+ 100 milyon kullanıcı sayısını aştı Pargali Google 0 05 Mart 2012 00:03
IRC deki User Sayısını Web e Yansıtmak. BaRiCeLLo PHP 30 20 Aralık 2007 22:55
Kanal ban sayısını notice olarak göndermek bendeniz00 mIRC Scripting Sorunları 1 27 Şubat 2006 14:26
Web sitesinde Kanallarda olan kullanıcı sayısını gösterme irc_forumlari Servisler 3 11 Şubat 2006 09:07