Return to Snippet

Revision: 38450
at January 3, 2011 11:40 by GeekOfWeb


Initial Code
<?php

class Randomainer {
	
	private static $checkedUrls = array(); // this array contains URL who is already checked.
	private static $savePath 	= '/'; // The path where the log must be saved.
	public $maxDomain = 10; // for security and performance issues is this a temporary solution..
	
	public $characters = array( // possible charachters
						'a', 'b', 'c', 'd', 'e', 'f',
 						'g', 'h', 'i', 'j', 'k', 'l',
 						'm', 'n', 'o', 'p', 'q', 'r',
 						's', 't', 'u', 'v', 'w', 'x',
 						'y', 'z', '0', '1', '2', '3',
 						'4', '5', '6', '7', '8', '9',
 						'-'
					);

	private static $tlds = array( // all Top-Level Domain Extensions
								'aero', 'asia', 'biz', 'cat', 'com', 'coop', 'edu', 'gov', 'info', 'int', 'jobs', 'mil', 'mobi',
								'museum', 'name', 'net', 'org', 'pro', 'tel', 'travel', 'ac', 'ad', 'ae', 'af', 'ag', 'ai', 'al',
								'am', 'an', 'ao', 'aq', 'ar', 'as', 'at', 'au', 'aw', 'ax', 'az', 'ba', 'bb', 'bd' ,'be', 'bf', 'bg',
								'bh', 'bi', 'bj', 'bm', 'bn', 'bo', 'br', 'bs', 'bt', 'bv', 'bw', 'by' ,'bz', 'ca', 'cc' ,'cd', 'cf',
								'cg', 'ch', 'ci', 'ck', 'cl', 'cm', 'cn', 'co', 'cr', 'cu', 'cv', 'cx', 'cy', 'cz', 'cz', 'de', 'dj', 'dk',
								'dm', 'do', 'dz', 'ec', 'ee', 'eg', 'er', 'es', 'et', 'eu', 'fi', 'fj', 'fk', 'fm', 'fo', 'fr', 'ga', 'gb',
								'gd', 'ge', 'gf', 'gg', 'gh', 'gi', 'gl', 'gm', 'gn', 'gp', 'gq', 'gr', 'gs', 'gt', 'gu', 'gw', 'gy', 'hk',
								'hm', 'hn', 'hr', 'ht', 'hu', 'id', 'ie', 'il', 'im', 'in', 'io', 'iq', 'ir', 'is', 'it', 'je', 'jm', 'jo',
								'jp', 'ke', 'kg', 'kh', 'ki', 'km', 'kn', 'kp', 'kr', 'kw', 'ky', 'kz', 'la', 'lb', 'lc', 'li', 'lk', 'lr',
								'ls', 'lt', 'lu', 'lv', 'ly', 'ma', 'mc', 'md', 'me', 'mg', 'mh', 'mk', 'ml', 'mn', 'mn', 'mo', 'mp', 'mr',
								'ms', 'mt', 'mu', 'mv', 'mw', 'mx', 'my', 'mz', 'na', 'nc', 'ne', 'nf', 'ng', 'ni', 'nl', 'no', 'np', 'nr',
								'nu', 'nz', 'nom', 'pa', 'pe', 'pf', 'pg', 'ph', 'pk', 'pl', 'pm', 'pn', 'pr', 'ps', 'pt', 'pw', 'py', 'qa',
								're', 'ra', 'rs', 'ru', 'rw', 'sa', 'sb', 'sc', 'sd', 'se', 'sg', 'sh', 'si', 'sj', 'sj', 'sk', 'sl', 'sm',
								'sn', 'so', 'sr', 'st', 'su', 'sv', 'sy', 'sz', 'tc', 'td', 'tf', 'tg', 'th', 'tj', 'tk', 'tl', 'tm', 'tn',
								'to', 'tp', 'tr', 'tt', 'tv', 'tw', 'tz', 'ua', 'ug', 'uk', 'us', 'uy', 'uz', 'va', 'vc', 've', 'vg', 'vi',
								'vn', 'vu', 'wf', 'ws', 'ye', 'yt', 'yu', 'za', 'zm', 'zw', 'arpa',
								'local'
							);
	
	
	public function generateDomainName($extensions)
	{
		// generate a domain name with all chars and selected domain extensions
		$counter = 0;
		foreach($this->characters as $first)
		{	
			foreach($this->characters as $second)
			{
				foreach($this->characters as $third)
				{
					foreach($extensions as $ext)
					{
						if(($first != '-' && $third != '-')
							&& in_array($ext, self::$tlds)) // the first and last character may not be - and the domain extension must be allowed.
						{
							$domain = $first.$second.$third.'.'.$ext; // build domain name
							$this->checkDomainName($domain);
							$counter = $counter +1;
							if($counter >= $this->maxDomain)// If all is good, we exit from here.
							{
								return 0;
							}
						}
					}//end extension foreach
				}//end third foreach
			}// end second foreach
		}// end first foreach
		
	}
	
	public function checkDomainName($url)
	{
		// redefine
		$domain = $url;
		$xml = new DOMDocument('1.0', 'utf-8');
		$xml->load('http://whoiswebservice.org/whois.asmx/IsDomainAvailable?website='.$domain);
		$result = $xml->getElementsByTagName('string')->item(0)->nodeValue;
		
		self::$checkedUrls[$domain] = $result;
	}
	
	public function getAvailableDomains()
	{
		$return = array();
		foreach(self::$checkedUrls as $domain => $status)
		{
			if($status == '1')
			{
				$return[] = $domain;
			}//end if status checking
		} // end foreach checkedurls 
		
		return $return; // return the array who contains the avalaible domains
	}
	
	public function getTlds()
	{
		return self::$tlds;
	}
	/**
	* This method will save the results in a log file
	* @return void
	*/
	public function save()
	{
		// method to save the results.
		$checkedDomains = self::$checkedUrls;
		$file = fopen('log-'.time().'.txt', 'a+'); // log dosyasini acalim, eger yok ise (Ki yok.. yenisini olusturalim.)
		foreach($checkedDomains as $domain => $status)
		{
			if($status == '1')
			{
				$text = "Domain: ".$domain." is available.\n";
			}else{
				$text = "Domain: ".$domain." is not available.\n";
			}
			fwrite($file, $text);
		}// end foreach checked domains
		fclose($file); // actigimiz log dosyasini kapatalim..
	}
}

Initial URL


Initial Description


Initial Title
Kod Savas improved

Initial Tags


Initial Language
PHP