Sayfalar

13 Temmuz 2009 Pazartesi

PHP Reverseip Class

Eski adı live.com şimdiki adı ise bing.com olan microsoft'un arama servisinin çok sevdiğim bir özelliği var ip:10.1.1.1 şeklinde arama yapınca o ip adresindeki web sitelerini listeliyor.Domaintols.com adresi bu işlem için ücret istiyor.
Bir ara can sıkıntısından yazdığım bing.com tabanlı reverse ip classını siz değerli okuyucularımla paylaşmak istedim hayrını görün bu arada syntaxhighlighter'i blog'a entegre ettim bundan sonra daha iyisini bulana kadar kodları syntaxhighlighter ile renklendireceğiz inşallah.
Classın özellikleri;
*Hatalar için dil seçeneği ekledim satır 127 de dil seçeneğini görebilirsiniz.
*domain.com ve ip adresi şeklinde arama yapabilirsiniz.
Eklemeyi Düşündüklerim;
*Cache ve proxy özelliği eklemeyi düşünüyorum.

Ekran görüntüleri;

class
php


<?php
set_time_limit(0);

/*
Reverse İp Class Başlangıç
Kodlama By s4l1h
http://pehepe.blogspot.com/
http://pehepe.blogspot.com/2009/07/php-reverseip-class.html
*/

class reverseip{
public function language($veri){
foreach($veri as $v=>$z){
$this->lang[$v]=$z;
}
}

// ip adresini tutuyoruz
public function adres($gel){
$this->ip=$gel;
}
// Girilen Değer Sayısalmı Diye bakılıyor
private function sayisal($gel){
if(intval($gel)){ return TRUE; } else { return FALSE; }
}
// ip Adresi bulunuyor eğer domain.com yazılmış ise ip adresi bulunuyor
public function ipbul($ip){
if($this->sayisal($ip)){
return $ip;
}elseif($this->sayisal(gethostbyname($ip))){
return gethostbyname($ip);
}else{
return FALSE;
}
}
// İp adresini doğruluyoruz
private function dogrula($ip){
$a=explode(".",$ip);
$say=count($a);
if($say!=4){ return FALSE; }
foreach($a as $k){
if($k > 10 AND $k < 999) {}else{ return FALSE; }
}

return TRUE;
}
// İp adresini Ekrana Yazıyoruz
public function ip(){
return $this->ipadresi;
}
// bing.COM'dan veriler çekilip array Olurşturuluyor
private function reverse($ip){
$this->ipadresi=$ip;
$i=1;
$x=1;
$desen='|<h3><a href="http://(.*)"|siU';
while($i<=100){
$al=file_get_contents('http://www.bing.com/results.aspx?q=ip:'.$ip.'&first='.$x.'&FORM=PERE5&mkt=en-US') or $this->hata($this->lang['connect']);
preg_match_all($desen,$al,$cik);

$say=count($cik[1])-1;
if($say<=1){
$this->hata($this->lang['notfound']);
return false;
}
for($v=0;$v<=$say;$v++){
$gg=strtolower($cik[1][$v]);
$gg=str_replace("www.","",$gg);
if(!strpos($gg,"/")){ $hepsi[]=$gg; }else{
$h=explode("/",$gg);
$hepsi[]=$h[0];
}

}
$x=$x+10;
$i=$i+1;
if(!strpos($al,"Next</a>")){ break; }
}
$hepsi=array_unique($hepsi);
foreach($hepsi as $veri){
$sonuc[]=$veri;
}
return $sonuc;
}

// SONUÇ ARRAY OLARAK DIŞARIYA VERİLİYOR;
public function sonuc(){
if(!$this->ipbul($this->ip)){
$this->hata($this->lang['invalidadres']);
return false;
}elseif(!$this->dogrula($this->ipbul($this->ip))){
$this->hata($this->lang['invalidip']);
return false;
}else{ return $this->reverse($this->ipbul($this->ip)); }
}
// Sonuç Sayısı
public function say(){
if(!$this->sonuc()){ $this->hata($this->lang['hatason']); }else{ return count($this->sonuc()); }
}

// Verileri Temizliyoruz
private function temizle($veri){
$veri=urldecode($veri);
$veri=get_magic_quotes_gpc() ? stripslashes($veri) : $veri;
return htmlentities($veri, ENT_QUOTES);
}
// Hata Üstüne Hata Ekliyoruz..
public function hata($veri){
$this->hatalar.=$veri."<br>";
}
// Hataları Gösteriyoruz...
public function hatagoster(){
if($this->hatalar){
return $this->hatalar;
}else{
return false;
}
}
}
/*
Reverse İp Class Bitiş
*/

// ÖRNEK KULLANIM

/*
Dil Dosyamız Start
*/
$lang=array();
$lang["connect"]="Bing.com Adresine Ulaşamadım";
$lang["notfound"]="Herhangi Bir site adresi bulamadım";
$lang["invalidadres"]="Geçersiz Adres";
$lang["invalidip"]="Geçersiz İp Adresi";
$lang["hatason"]="Veriler Sayılamıyor Çünkü Veri Alınamadı";
/*
Dil Dosyamız End
*/


/*
Link Yapma Fonksiyonu Start
*/
function linkyap($site){
return '<a href="http://'.$site.'" target="_blank" >'.$site.'</a>';
}
/*
Link Yapma Fonksiyonu End
*/


$ip=$_GET['ip'];// www.domain.com'da yazılabilinir.
$bul=& new reverseip();
$bul->language($lang);
$bul->adres($ip);
$dizi=$bul->sonuc();// Veriler Dizi olarak çıkartıldı
//print_r($dizi);
//echo $bul->ip(); // Taranan Web Sitesinin İp adresi


if($bul->hatagoster()){ // Hata Varmı Diye Kontrol Ediyoruz.
echo "Error:<br>".$bul->hatagoster(); // Eğer Hata Varsa Hataları Gösteriyoruz.
}else{ // Eğer Hata Yoksa Başlangıç


echo "Toplam Site Sayısı:<b>".$bul->say()."</b><br>";
echo "Taranan ip adresi :<b>".$bul->ip()."</b><br>";

// Html Olarak Yazıyoruz Start
echo "<pre>";
foreach($dizi as $site){
echo linkyap($site)."\n";
}
echo "</pre>";
// Html Olarak Yazıyoruz End


// Textarea'ya Çıkartıyoruz Start
echo '<textarea rows="20" cols="35">';
foreach($dizi as $site){
echo "$site\n";
}
echo '</textarea>';
// Textarea'ya Çıkartıyoruz End

} // Eğer Hata Yoksa Bitiş..........

?>

1 yorum:

Mehmet dedi ki...

Mükemmel bir sınıf yazmışsın abi. Ellerine sağlık. Yaptığı işlevi başka türlüde görebiliyorduk ama kodlama mükemmel.
Ellerine sağlık.