[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как узнать дату создания домена?
lokoss
Как можно узнать дату создания/регистрации домена с выводом через echo (как описывается в whois), чтобы пользователь вводил домен, а ему выдавало что тот уже зарегистрирован с такой то даты. Увы эта тема не обсуждается даже на оф сайте php.net

Благодарю!



Спустя 39 минут, 7 секунд (7.07.2010 - 18:09) linker написал(а):
www.nic.ru/whois

Спустя 1 минута, 48 секунд (7.07.2010 - 18:11) Basili4 написал(а):
это тебе на до парсить whois ответ почитай тут
http://irbis-team.com/15/13/5 там есть пример как определить занятость домена если я не ошибаюсь Whois возвращает и дату регистрации

Спустя 3 часа, 55 минут, 1 секунда (7.07.2010 - 22:06) lokoss написал(а):
http://irbis-team.com - люди много полезного сделали, хороший код у них, шутки шутит)
Не достающий Украинский whois легко дописывается как whois.ua и работает на ура.
Вот только дату не выдаёт, а нужна дата Creation Date: как здесь www.nic.ru/whois .

Как вариант можем рассматривать:
http://nic.ru/whois/?domain=%s&ask_registrar=1
где %s - можно заменить на нужный нам сайт, но как попросить результат забрать именно данные Creation Date или ещё лучше сделать а-ля whois показ с возможностью добавления/отнимания полей ответа:
...Creation Date, Expiration Date, Domain servers in listed order, Administrative Contact...

???

Спустя 12 часов, 17 минут, 57 секунд (8.07.2010 - 10:23) SlavaFr написал(а):
1) зарегистрируйся и скачй с phpclasses.org этот класс http://www.phpclasses.org/package/694-PHP-...rent-tld-s.html

2)используй метод info() и премени на ишодящий стринг регулярное выражение для поиска нужного стринга /created:\s+(\S++)/

Спустя 9 часов, 6 минут, 25 секунд (8.07.2010 - 19:30) lokoss написал(а):
Цитата (SlavaFr @ 8.07.2010 - 07:23)
1) зарегистрируйся и скачй с phpclasses.org этот класс http://www.phpclasses.org/package/694-PHP-...rent-tld-s.html

2)используй метод info() и премени на ишодящий стринг регулярное выражение для поиска нужного стринга /created:\s+(\S++)/

Отличнейший экземпляр, огромное спасибо! Выдаёт всё как будто в whois захожу. Отличная штука!
Только на самом интересном проблема - со стрингами, для меня это новое. Весь день убил, но увы ни круть верть:

$text = preg_match("/created:\s+(\S++)/", ';$string', $matches);
echo $text;


ни верть круть:


$text = preg_match("/created:\s+(\S++)/", ';$string', $matches);
echo $domain->html_info($text);


ничего не выходит. без профессионального подхода скручивания в формулу не разобраться.. sad.gif

Спустя 54 минуты, 52 секунды (8.07.2010 - 20:25) linker написал(а):
if (preg_match("/created:\s+(\S++)/", $string, $matches))
{
print_r($matches);
}

Спустя 30 минут, 44 секунды (8.07.2010 - 20:56) lokoss написал(а):
Цитата (linker @ 8.07.2010 - 17:25)
if (preg_match("/created:\s+(\S++)/", $string, $matches))
{
print_r($matches);
}

<?

include("domain.class.php");#

// Initializing class

$domain=new domain("mexijam.com");

// Printing out whois data in HTML format
echo $domain->html_info();
if (preg_match("/reation\s+(\S++)/", $string, $matches))
{
echo print_r($matches);
}

?>


echo $domain->html_info();

Выдаёт пункты whios и всё. Натребование показать строку со словом "reat" (самый частый вариант от created: и Creation Date:) отказывается напрочь:
echo print_r($matches);
иногда выдаёт Array, но не Creation Date: 27.03.2005 .

Вроди не так много осталось, но эти регулярные выражение для поиска нужного стринга...

Спустя 19 минут, 36 секунд (8.07.2010 - 21:15) DedMorozzz написал(а):
какое отношение тема имеет к ПХП+СКЛ ?? Перемещаемся в "PHP?"

Спустя 3 минуты, 22 секунды (8.07.2010 - 21:18) linker написал(а):
Я не знаю как работает класс, но судя по тому что сказал SlavaFr, $domain->html_info(); возвращает строку. Значит:
$string = $domain->html_info();
if (preg_match("/reation\s+(\S++)/", $string, $matches))
{
print_r($matches);
// print_r() здесь просто для теста, чтобы посмотреть а, что же там совпало в регулярке
}

Спустя 4 минуты, 36 секунд (8.07.2010 - 21:23) lokoss написал(а):
Цитата (DedMorozzz @ 8.07.2010 - 18:15)
какое отношение тема имеет к ПХП+СКЛ ?? Перемещаемся в "PHP?"

Пардон, изначально казалось что можно решить этими средствами. Поехали)

Спустя 1 день, 1 час, 8 минут, 19 секунд (9.07.2010 - 22:31) SlavaFr написал(а):
в общем SlavaFr сказал не html_info() , a info() использовать smile.gif, хотя разница в общем только в '<br>'

Спустя 13 часов, 55 минут, 30 секунд (10.07.2010 - 12:27) lokoss написал(а):
Цитата (SlavaFr @ 9.07.2010 - 19:31)
в общем SlavaFr сказал не html_info() , a info() использовать smile.gif, хотя разница в общем только в '<br>'

SlavaFr, Помоги людям обрести счастье, начертай пару строк, если не сложно unsure.gif

Спустя 3 дня, 9 часов, 31 минута, 44 секунды (13.07.2010 - 21:59) SlavaFr написал(а):
Цитата (lokoss @ 10.07.2010 - 09:27)
SlavaFr, Помоги людям обрести счастье, начертай пару строк, если не сложно unsure.gif

не серьезно, что непонятно? @linker все написал, тебе в принципе только вместо html_info prosto info написать и из $matches нужный результат вытянуть.
Где конкретно не получается?

Спустя 15 часов, 44 минуты, 44 секунды (14.07.2010 - 13:43) lokoss написал(а):
[QUOTE=SlavaFr,13.07.2010 - 18:59] [QUOTE=lokoss,10.07.2010 - 09:27] SlavaFr, Помоги людям обрести счастье, начертай пару строк, если не сложно unsure.gif [/QUOTE]
Не серьёзно не не знать, не серьёзно не хотеть знать. Уже решил, всё отлично работает!
Огромное спасибо Basili4, SlavaFr и linker

Так же во время редактирования мной данного сообщения я увидел ответ от Basili4: Дата 14.07.2010 - 10:45
вместо этого
print_r($matches);
пиши

echo $matches[1]; 


который почему-то не виден на форуме.

Я решил немного по другому:

$arr= $matches;
print_r($arr[1]);


но думаю твой ответ даже лучше) Спасибо!

Спустя 1 минута, 30 секунд (14.07.2010 - 13:45) Basili4 написал(а):
вместо этого
print_r($matches);
пиши

echo $matches[1];

Спустя 1 день, 17 часов, 21 минута, 7 секунд (16.07.2010 - 07:06) lokoss написал(а):
Значение $mydomainname которое содержит название домена (test.com) везде в коде вставляется отлично, но в примере domain.class.php теряет значение и выдаёт пустой результат:


include("domain.class.php");
$domain=new domain($mydomainname);

-нет

include("domain.class.php");
$domain=new domain('$mydomainname');

-нет

Возможен только вариант прописать от руки:

include("domain.class.php");
$domain=new domain('test.com');

-да

но как можно сделать чтобы вставлялось значение из $mydomainname и почему оно здесь не работает?

П.С.: Файл domain.class.php начинается с:


<?

class
domain{
var $domain="";

var $servers=array(...

Спустя 22 минуты, 12 секунд (16.07.2010 - 07:28) Basili4 написал(а):
Нужно смотреть весь файл domain.class.php гдето там происходит затерание но по моему вот сдесь var $domain=""; хотя не понятно как используется вобщем мало информации. Нужен код класса

Спустя 53 минуты, 11 секунд (16.07.2010 - 08:21) lokoss написал(а):
Цитата (Basili4 @ 16.07.2010 - 04:28)
Нужно смотреть весь файл  domain.class.php гдето там происходит затерание  но по моему  вот сдесь var $domain=""; хотя не понятно как используется вобщем мало информации. Нужен код класса

На всякий случай выкладываю все 3 файла:
- doc_domain - инструкцию,
- domain.class - сам клас,
- examples_domain - местный index

и привожу код класса:



<?
/**
* This class checks the availability of a domain and gets the whois data
*
*
@author Sven Wagener <wagener_at_indot_dot_de>
* @copyright inDot media
*
@include Funktion:_include_
*/


class domain{
var $domain="";

/*******************************
* Initializing server variables
* array(top level domain,whois_Server,not_found_string or MAX number of CHARS: MAXCHARS:n)
**/

var $servers=array(
array("zj.cn","whois.cnnic.net.cn","No entries found"
//Далее следует много whois сайтов)
);



var $idn=array(224,225,226,227,228,229,230,231,232,233,234,235,240,236,237,238,239,241,242,243,244,245,246,248,254,249,250,251,252,253,255);
// var $idn=array("00E0","00E1","00E2","00E3","00E4","00E5","0101","0103","0105","00E6","00E7","0107","0109","010B","010D","010F","0111","00E8","00E9","00EA","00EB","0113","0115","0117","0119","011B","014B","00F0","011D","011F","0121","0123","0125","0127","00EC","00ED","00EE","00EF","0129","012B","012D","012F","0131","0135","0137","0138","013A","013C","013E","0142","00F1","0144","0146","0148","00F2","00F3","00F4","00F5","00F6","00F8","014D","014F","0151","0153","0155","0157","0159","015B","015D","015F","0161","0163","0165","0167","00FE","00F9","00FA","00FB","00FC","0169","016B","016D","016F","0171","0173","0175","00FD","00FF","0177","017A","017C","017E");

/**
* Constructor of class domain
*
@param string $str_domainame the full name of the domain
*
@desc Constructor of class domain
*/

function domain($str_domainname){
$this->domain=$str_domainname;
}

/**
* Returns the whois data of the domain
*
@return string $whoisdata Whois data as string
*
@desc Returns the whois data of the domain
*/

function info(){
if($this->is_valid()){

$tldname=$this->get_tld();
$domainname=$this->get_domain();
$whois_server=$this->get_whois_server();

// If tldname have been found
if($whois_server!=""){
// Getting whois information
$fp = fsockopen($whois_server,43);

$dom=$domainname.".".$tldname;
// fputs($fp, "$dom\r\n");

// New IDN

if($tldname=="de") {
fputs($fp, "-C ISO-8859-1 -T dn $dom\r\n");
} else {
fputs($fp, "$dom\r\n");
}

// Getting string
$string="";

// Checking whois server for .com and .net
if($tldname=="com" || $tldname=="net" || $tldname=="edu"){
while(!feof($fp)){
$line=trim(fgets($fp,128));

$string.=$line;

$lineArr=split(":",$line);

if(strtolower($lineArr[0])=="whois server"){
$whois_server=trim($lineArr[1]);
}
}

// Getting whois information
$fp = fsockopen($whois_server,43);

$dom=$domainname.".".$tldname;
fputs($fp, "$dom\r\n");

// Getting string
$string="";

while(!feof($fp)){
$string.=fgets($fp,128);
}

// Checking for other tld's
}else{
while(!feof($fp)){
$string.=fgets($fp,128);
}
}

fclose($fp);

return $string;
}else{
return "No whois server for this tld in list!";
}
}
else{
return "Domainname isn't valid!";
}
}


/**
* Returns the whois data of the domain in HTML format
*
@return string $whoisdata Whois data as string in HTML
*
@desc Returns the whois data of the domain in HTML format
*/

function html_info(){
return nl2br($this->info());
}

/**
* Returns name of the whois server of the tld
*
@return string $server the whois servers hostname
*
@desc Returns name of the whois server of the tld
*/

function get_whois_server(){
$found=false;
$tldname=$this->get_tld();
for($i=0;$i<count($this->servers);$i++){
if($this->servers[$i][0]==$tldname){
$server=$this->servers[$i][1];
$full_dom=$this->servers[$i][3];
$found=true;
}
}

return $server;
}

/**
* Returns the tld of the domain without domain name
*
@return string $tldname the tlds name without domain name
*
@desc Returns the tld of the domain without domain name
*/

function get_tld(){
// Splitting domainname
$domain=split("\.",$this->domain);
if(count($domain)>2){
$domainname=$domain[0];
for($i=1;$i<count($domain);$i++){
if($i==1){
$tldname=$domain[$i];
}else{
$tldname.=".".$domain[$i];
}
}
}
else{
$domainname=$domain[0];
$tldname=$domain[1];
}
return $tldname;
}


/**
* Returns all tlds which are supported by the class
*
@return array $tlds all tlds as array
*
@desc Returns all tlds which are supported by the class
*/

function get_tlds(){
$tlds="";
for($i=0;$i<count($this->servers);$i++){
$tlds[$i]=$this->servers[$i][0];
}
return $tlds;
}

/**
* Returns the name of the domain without tld
*
@return string $domain the domains name without tld name
*
@desc Returns the name of the domain without tld
*/

function get_domain(){
// Splitting domainname
$domain=split("\.",$this->domain);
return $domain[0];
}

/**
* Returns the full domain
*
@return string $fulldomain
*
@desc Returns the full domain
*/

function get_fulldomain(){
return $this->domain;
}

/**
* Returns the string which will be returned by the whois server of the tld if a domain is avalable
*
@return string $notfound the string which will be returned by the whois server of the tld if a domain is avalable
*
@desc Returns the string which will be returned by the whois server of the tld if a domain is avalable
*/

function get_notfound_string(){
$found=false;
$tldname=$this->get_tld();
for($i=0;$i<count($this->servers);$i++){
if($this->servers[$i][0]==$tldname){
$notfound=$this->servers[$i][2];
}
}

return $notfound;
}

/**
* Returns if the domain is available for registering
*
@return boolean $is_available Returns 1 if domain is available and 0 if domain isn't available
*
@desc Returns if the domain is available for registering
*/

function is_available(){
$whois_string=$this->info(); // Gets the entire WHOIS query from registrar
$not_found_string=$this->get_notfound_string(); // Gets 3rd item from array
$domain=$this->domain; // Gets current domain being queried

$whois_string2=@ereg_replace("$domain","",$whois_string);

$whois_string =@preg_replace("/\s+/"," ",$whois_string); //Replace whitespace with single space

$array=split(":",$not_found_string);

if($array[0]=="MAXCHARS"){
if(strlen($whois_string2)<=$array[1]){
return true;
}else{
return false;
}
}
else{
if(preg_match("/".$not_found_string."/i",$whois_string)){
return true;
}else{
return false;
}
}
}


function get_cn_server($whois_text){

}



/**
* Returns if the domain name is valid
*
@return boolean $is_valid Returns 1 if domain is valid and 0 if domain isn't valid
*
@desc Returns if the domain name is valid
*/

function is_valid(){

$domainArr=split("\.",$this->domain);

// If it's a tld with two Strings (like co.uk)
if(count($domainArr)==3){

$tld=$domainArr[1].".".$domainArr[2];
$found=false;

for($i=0;$i<count($this->servers) && $found==false;$i++){
if($this->servers[$i][0]==$tld){
$found=true;
}
}

if(!$found){
return false;
}

}
else if(count($domainArr)>3){
return false;
}

// Creating regular expression for
if($this->get_tld()=="de"){
for($i=0;$i<count($this->idn);$i++){
$idn.=chr($this->idn[$i]);
// $idn.="\x".$this->idn[$i]."";
}
$pattern="^[a-z".$idn."0-9\-]{3,}$";
}else{
$pattern="^[a-z0-9\-]{3,}$";
}

if(ereg($pattern,strtolower($this->get_domain())) && !ereg("^-|-$",strtolower($this->get_domain())) && !preg_match("/--/",strtolower($this->get_domain()))){
return true;
}else{
return false;
}
}
}

?>


Пробовал var $domain=""; в комбинациях:

//var $domain="";
...
var $domain;
...

var $domain="$mydomainname";
...

var $domain="$_GET['portals']";
...

var $domain="$domain";
...

var $domain="$domain";
...

var $domain="test.com";
...


перемещать по файлам и добавлять в domain.class $domain в некоторых компановках, а так же добавлял содержимое domain.class вместо include("domain.class.php"); но увы...

Спустя 14 часов, 53 минуты, 12 секунд (16.07.2010 - 23:15) lokoss написал(а):
Дата создания домена = самая старая дата на странице. Как можно сделать чтобы выводило не первую попавшуюся дату после "date:"(как описывается в примере выше) а все даты со страницы и находило из них самую раннюю(старую)?

Полагаю что можно это сделать с помощью:

$massivSRezultatamiPoiska = array();
foreach ($gdeIshchem as $v)
if (strpos($v, $chtoIshchem) !== false)
$new[] = $v;


где $chtoIshchem может быть значением $string из примера с preg_match.

А как сделать чтобы находило самую старую(раннюю) дату из списка найденых дат и может есть более профессиональный способ?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.