• 04-03-2014, 11:20:33
    #1
    Kullanıcıdan domain ismini yazmasını istiyorum. Yazdığının aynısını alıyorum yani aaa ise aaa , aaa.com ise aaa.com yani bir işlemden geçirmiyorum.

    Benim öğrenmek istediğim kullanıcı domainin sonuna com,net gibi domain uzantısı yazdı mı yazmadı mı?

    Bunun regex ile yapılabileceğini okudum fakat yapmayı başaramadım. Yardımcı olanlara şimdiden teşekkürler.
  • 04-03-2014, 11:44:59
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    @Karaman; şöyle bi' şey işine yarar mı?

    <?php
    	
    	$input = "saintx.net"; # Kendinize göre düzenleyin.
    	
    	$parts = explode(".", trim($input));
    	
    	$part_count = count($parts);
    	
    	if($parts[0] == "www" && $part_count >= 3)
    	{
    		unset($parts[0]);
    		
    		$parts = array_values($parts);
    		
    		$part_count = count($parts);
    	}
    	
    	if($parts_count == 2)
    	{
    		// Doğru bi' giriş yapılmış
    		$tlds = array(
    			"com", "net", "org"
    		);
    		
    		if(in_array($parts[1], $tlds))
    		{
    			echo "işlem tamam. #1";
    		}
    	}
    	else if($parts_count == 3)
    	{
    		// com.tr co.uk gibi domainler için.
    		$tlds = array(
    			"com.tr", "gov.tr", "edu.tr"
    		);
    		
    		if(in_array($parts[1].".".$parts[2], $tlds))
    		{
    			echo "işlem tamam. #2";
    		}
    	}
    	else
    	{
    		// hatalı bi' giriş yapılmış
    		echo "hatalı giriş";
    	}
  • 04-03-2014, 11:54:18
    #3
    saintx adlı üyeden alıntı: mesajı görüntüle
    @Karaman; şöyle bi' şey işine yarar mı?

    <?php
    	
    	$input = "saintx.net"; # Kendinize göre düzenleyin.
    	
    	$parts = explode(".", trim($input));
    	
    	$part_count = count($parts);
    	
    	if($parts[0] == "www" && $part_count >= 3)
    	{
    		unset($parts[0]);
    		
    		$parts = array_values($parts);
    		
    		$part_count = count($parts);
    	}
    	
    	if($parts_count == 2)
    	{
    		// Doğru bi' giriş yapılmış
    		$tlds = array(
    			"com", "net", "org"
    		);
    		
    		if(in_array($parts[1], $tlds))
    		{
    			echo "işlem tamam. #1";
    		}
    	}
    	else if($parts_count == 3)
    	{
    		// com.tr co.uk gibi domainler için.
    		$tlds = array(
    			"com.tr", "gov.tr", "edu.tr"
    		);
    		
    		if(in_array($parts[1].".".$parts[2], $tlds))
    		{
    			echo "işlem tamam. #2";
    		}
    	}
    	else
    	{
    		// hatalı bi' giriş yapılmış
    		echo "hatalı giriş";
    	}

    İlginiz için teşekkür ederim hocam fakat yanlış sonuç döndürüyor. Ben aslında http , www yazıp yazmadığını önemsemiyorum .com , .eu , .guru yazmış mı yazmamış mı o önemli benim için
  • 04-03-2014, 11:57:32
    #4
    @Karaman; gözümden kaçan ufak bi' hata varmış şu şekilde deneyebilir misin?

    <?php
    	
    	$input = "saintx.net"; # Kendinize göre düzenleyin.
    	
    	$parts = explode(".", trim($input));
    	
    	$part_count = count($parts);
    	
    	if($parts[0] == "www" && $part_count >= 3)
    	{
    		unset($parts[0]);
    		
    		$parts = array_values($parts);
    		
    		$part_count = count($parts);
    	}
    	
    	if($part_count == 2)
    	{
    		// Doğru bi' giriş yapılmış
    		$tlds = array(
    			"com", "net", "org"
    		);
    		
    		if(in_array($parts[1], $tlds))
    		{
    			echo "işlem tamam. #1";
    		}
    	}
    	else if($part_count == 3)
    	{
    		// com.tr co.uk gibi domainler için.
    		$tlds = array(
    			"com.tr", "gov.tr", "edu.tr"
    		);
    		
    		if(in_array($parts[1].".".$parts[2], $tlds))
    		{
    			echo "işlem tamam. #2";
    		}
    	}
    	else
    	{
    		// hatalı bi' giriş yapılmış
    		echo "hatalı giriş";
    	}
  • 04-03-2014, 12:11:33
    #5
    saintx adlı üyeden alıntı: mesajı görüntüle
    @Karaman; gözümden kaçan ufak bi' hata varmış şu şekilde deneyebilir misin?

    <?php
    	
    	$input = "saintx.net"; # Kendinize göre düzenleyin.
    	
    	$parts = explode(".", trim($input));
    	
    	$part_count = count($parts);
    	
    	if($parts[0] == "www" && $part_count >= 3)
    	{
    		unset($parts[0]);
    		
    		$parts = array_values($parts);
    		
    		$part_count = count($parts);
    	}
    	
    	if($part_count == 2)
    	{
    		// Doğru bi' giriş yapılmış
    		$tlds = array(
    			"com", "net", "org"
    		);
    		
    		if(in_array($parts[1], $tlds))
    		{
    			echo "işlem tamam. #1";
    		}
    	}
    	else if($part_count == 3)
    	{
    		// com.tr co.uk gibi domainler için.
    		$tlds = array(
    			"com.tr", "gov.tr", "edu.tr"
    		);
    		
    		if(in_array($parts[1].".".$parts[2], $tlds))
    		{
    			echo "işlem tamam. #2";
    		}
    	}
    	else
    	{
    		// hatalı bi' giriş yapılmış
    		echo "hatalı giriş";
    	}
    Hocam teşekkür ederim, çalışıyor. Fakat domain uzantılarını tek tek elle girdiğimizden ve her gün de yeni domainler eklendiğinden sisteme tam güvenemiyorum
  • 04-03-2014, 12:13:00
    #6
    @Karaman; whois kütüphaneleri mevcut onları kullanarak bi' örnek hazırlayayım istersen?
  • 04-03-2014, 12:16:03
    #7
    saintx adlı üyeden alıntı: mesajı görüntüle
    @Karaman; whois kütüphaneleri mevcut onları kullanarak bi' örnek hazırlayayım istersen?
    Zahmet etmeyin hocam ben araştırırım.
  • 04-03-2014, 12:26:50
    #8
    bu işi en kaliteli ve hatasız yapmak için hazır classlar kullanın aksi taktirde hatalar alabilirsiniz.
    vaktim yo kama aklım gelen örnek
    parse_url ilr önce tam domain nameyi alıp içinde "." arayın
    varsa sayısını bulun
    unutmayın com.tr gibi 2 noktaya sahip uzantılarda var.
    bunun için ise 3 ve üzeri nokta varmı kontrol ettirin
    eğer 3 ve üzerinde nokta varsaa ya ip adresi yada sub domainli isimdir.
    fakat 2 veya 1 tane nokta varsa sağdan sola ilk noktadan bölüceksiniz.
    bunun için ise preg match ile hem tek hemde çift nokta için 2 ayrı regex oluşturun.

    sonuç olarak ilk noktadan sonrası domain uzantısı olacaktır.

    eğer akşama unutmassam ve konu çöülmesse bu dediğim fonksiyonu yazıp paylaşırım
  • 04-03-2014, 12:42:01
    #9
    @Karaman; şu örnekte işine yarayabilir.

    Bilgisayarınızda veya sunucunuzda Composer kurulu değilse şu yazımı okumanızı tavsiye ediyorum.

    composer.json;
    {
    	"minimum-stability": "dev",
    	"require": {
    		"jeremykendall/php-domain-parser": "0.0.*"
    	}
    }
    test.php;
    <?php
    	
    	error_reporting(E_ALL);
    	
    	set_include_path(str_replace("\\", "/", dirname(realpath(__FILE__))));
    	
    	date_default_timezone_set("Europe/Istanbul");
    	
    	require("vendor/autoload.php");
    	
    	use \Pdp\Parser;
    	use \Pdp\PublicSuffixListManager;
    	
    	$pslManager = new PublicSuffixListManager();
    	$parser = new Parser($pslManager->getList());
    	
    	$hosts = array("github.com", "www.path.com", "saintx.net", "turkiye.gov.tr", "google.com.tr", "ttnet.com.tr", "www.metu.edu.tr");
    	
    	foreach($hosts as $host)
    	{
    		$suffix = $parser->parseHost($host)->publicSuffix;
    		
    		echo "{$host}: publicSuffix -> {$suffix} <br />";
    	}
    çıktı;