|
SpartakuS ↓
|
 |
|
06 Октябрь, 2010, 09:22:51
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: Адекваты Карма: 32
Сообщений: 2444 Сила слова: 1.31
|
<?php
class whois {
protected $tldName;
protected $domainName;
protected $aInfo = array();
protected $sInfo = '';
private $conf = array();
public function __construct ($domain, $conf) {
$this-> conf = $conf;
$domain = $this-> validate($domain);
$this-> parseDomain($domain);
$this-> getAnswer();
}
public function getText ($html = false) {
return $html ? nl2bt ($this-> sInfo) : $this-> sInfo;
}
public function getInfo ($element = false) {
return $element ? $this-> aInfo[strtolower($element)] : $this-> aInfo;
}
public function isAvailable () {
return (stripos ($this-> sInfo, $this-> conf[$this-> tldName]['server'][1]) === false) ? false : true;
}
public function getRegDate () {
return $this-> getPart('created');
}
public function getExpireDate () {
return $this-> getPart('expire');
}
public function getNS () {
return $this-> getPart('ns');
}
private function getPart ($type) {
$info = $this-> aInfo[strtolower($this-> conf[$this-> tldName][$type])];
if (! $info && $this-> conf[$this-> tldName]['regexp'][$type]) {
preg_match($this-> conf[$this-> tldName]['regexp'][$type], $this-> sInfo, $info);
$info = $info[1];
}
return $info;
}
private function parseDomain ($domain) {
$this-> tldName = explode(".", $domain);
$this-> domainName = array_shift($this-> tldName);
$this-> tldName = implode('.', $this-> tldName);
}
protected function getAnswer () {
$server = $this-> conf[$this-> tldName]['server'][0];
$domain = $this-> domainName . '.' . $this-> tldName;
if ($this-> conf[$this-> tldName]['server'][2]) {
$this-> getDoubleAnswer($domain, $server);
} else {
$this-> getSimpleAnswer($domain, $server);
}
}
protected function getSimpleAnswer ($domain, $server) {
$fp = @ fsockopen($server, 43);
if (! $fp) throw new Exception ('Whois server not available.');
fputs($fp, "$domain\r\n");
$this-> sInfo = '';
$answer = array();
while (! feof($fp)) {
$answer[] = trim(fgets($fp, 128));
}
for ($i = 0; $i<count ($answer); $i++ ) {
$sInfo = $answer[$i];
$this-> sInfo .= "$sInfo\r\n";
$aInfo = array_map('trim', explode(':', $sInfo, 2));
if (count($aInfo) == 2 && preg_match('/^[-a-z ]+$/i', $aInfo[0])) {
if (! empty($aInfo[1])) {
if (! isset($this-> aInfo[strtolower($aInfo[0])])) {
$this-> aInfo[strtolower($aInfo[0])] = $aInfo[1];
} else {
if(is_array($this-> aInfo[strtolower($aInfo[0])])) {
$this-> aInfo[strtolower($aInfo[0])][] = $aInfo[1];
} else {
$this-> aInfo[strtolower($aInfo[0])] = array($this-> aInfo[strtolower($aInfo[0])], $aInfo[1]);
}
}
} else {
do {
$i++;
$string = $answer[$i];
if(empty($string) || strpos($string, ':') !== false) break;
$this-> sInfo .= "$string\r\n";
$this-> aInfo[strtolower($aInfo[0])][] = $string;
} while (! empty($string) && strpos($string, ':') === false);
$i--;
}
}
}
}
protected function getDoubleAnswer ($domain, $server) {
$fp = @ fsockopen($server, 43);
if (! $fp) throw new Exception ('Whois server not available.');
fputs($fp, "$domain\r\n");
$this-> sInfo = '';
while (! feof($fp)) {
$sInfo = trim(fgets($fp, 128));
$this-> sInfo .= "$sInfo\r\n";
$aInfo = array_map('trim', explode(':', $sInfo, 2));
if (strtolower($aInfo[0]) == 'whois server') {
$doubleServer = $aInfo[1];
}
}
$doubleServer = $doubleServer ? $doubleServer : 'whois.networksolutions.com';
$this-> getSimpleAnswer($domain, $doubleServer);
}
protected function validate ($domain) {
preg_match ('#^(?:(?:http|https|ftp|svn)?://)?([a-z0-9\.\-]+)(?:/(?:.*))?$#i', $domain, $domain);
if (! $domain) throw new Exception ('Not Valid Domain');
$domain = $domain[1];
if (in_array('-', array($domain{1}, substr($domain, -1))) && strpos($domain, '--') !== false) throw new Exception ('Not Valid Domain');
return $domain;
}
}
//Настройки Хуиза
$whoisConf = array (
'ru' => array(
'server' => array('whois.ripn.ru', 'No entries found'),
'created' => 'created',
'expire' => 'paid-till',
'ns' => 'nserver'
),
'su' => array(
'server' => array('whois.ripn.ru', 'No entries found'),
'created' => 'created',
'expire' => 'paid-till',
'ns' => 'nserver'
),
'com' => array(
'server' => array('whois.crsnic.net', 'No match', true),
'created' => 'Creation date',
'expire' => 'Expiration Date',
'ns' => 'Domain servers in listed order',
'regexp' => array(
'created' => '/Record created on ([0-9]{2}-[a-z]{3}-[0-9]{4})/i',
'expire' => '/Record expires on ([0-9]{2}-[a-z]{3}-[0-9]{4})/i',
)
),
'net' => array(
'server' => array('whois.crsnic.net', 'No match', true),
'created' => 'Creation Date',
'expire' => 'Expiration Date',
'ns' => 'Domain servers in listed order',
'regexp' => array(
'created' => '/Record created on ([0-9]{2}-[a-z]{3}-[0-9]{4})/i',
'expire' => '/Record expires on ([0-9]{2}-[a-z]{3}-[0-9]{4})/i',
)
),
'org' => array(
'server' => array('whois.pir.org', 'NOT FOUND'),
'created' => 'Created On',
'expire' => 'Expiration Date',
'ns' => 'Name Server'
),
'biz' => array(
'server' => array('whois.biz', 'Not found'),
'created' => 'Name Server:',
'expire' => 'Expiration Date',
'ns' => 'Name Server'
),
'info' => array(
'server' => array('whois.afilias.info', 'Not found'),
'created' => 'Created On',
'expire' => 'Expiration Date',
'ns' => 'Name Server'
),
'mobi' => array(
'server' => array('whois.dotmobiregistry.net', 'NOT FOUND'),
'created' => 'Created On',
'expire' => 'Expiration Date',
'ns' => 'Name Server'
),
'name' => array(
'server' => array('whois.nic.name', 'No match'),
'created' => 'Created On',
'expire' => 'Expires On',
'ns' => 'Name Server'
),
'tv' => array(
'server' => array('whois.nic.tv', 'No match'),
'created' => 'Creation date',
'expire' => 'Expiration date',
'ns' => 'Name Server'
),
'cn' => array(
'server' => array('whois.cnnic.net.cn', 'No entries found'),
'created' => 'Registration Date',
'expire' => 'Expiration Date',
'ns' => 'Name Server'
),
'ki' => array(
'server' => array('whois.nic.ki', 'NOT FOUND'),
'created' => 'Created',
'expire' => 'Expires',
'ns' => 'Name Server'
),
'in' => array(
'server' => array('whois.inregistry.in', 'NOT FOUND'),
'created' => 'Created On',
'expire' => 'Expiration Date',
'ns' => 'Name Server'
),
'mn' => array(
'server' => array('whois2.afilias-grs.net', 'NOT FOUND'),
'created' => 'Created On',
'expire' => 'Expiration Date',
'ns' => 'Name Server'
),
'cc' => array(
'server' => array('whois.nic.cc', 'No match'),
'created' => 'Creation Date',
'expire' => 'Expiration Date',
'ns' => 'Name Server'
),
'ws' => array(
'server' => array('whois.worldsite.ws', 'No match for'),
'created' => 'Domain Created',
'expire' => 'Domain Currently Expires',
'ns' => 'Name Server'
),
'asia' => array(
'server' => array('whois.nic.asia', 'NOT FOUND'),
'created' => 'Domain Create Date',
'expire' => 'Domain Expiration Date',
'ns' => 'Nameservers'
),
);
буду благоарен за кодревью =)
|
|
|
|
|
Записан
|
 цска ебаное гавно.
|
|
|
|
phpdude ↓
|
 |
|
06 Октябрь, 2010, 09:34:01 , спустя 11 минут 10 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
я - ЭМО
Группа: в ухо Карма: 344
Сообщений: 20790 Сила слова: 1.65
|
ценное из этого - массив, остальное не важно :D
|
|
|
|
|
Записан
|
забанен. могу забанить других, пишите в личку BEER. Helping ugly people have sex since 1862.
|
|
|
|
SpartakuS ↓
|
 |
|
06 Октябрь, 2010, 09:43:44 , спустя 9 минут 43 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: Адекваты Карма: 32
Сообщений: 2444 Сила слова: 1.31
|
phpdude, ну да. Ради него я и делал. Но с разнообразием хуйответов конечно сложно боротся. Посторально сделать максимально гибко =)
|
|
|
|
|
Записан
|
 цска ебаное гавно.
|
|
|
|
NRG ↓
|
 |
|
06 Октябрь, 2010, 09:47:42 , спустя 3 минуты 58 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Headshot!MultiKill!
Группа: нинзя Карма: 777
Сообщений: 4700 Сила слова: 16.81
|
я как всегда приебусь к стилю.
ты вкурсе что именование протектед/приват методов/свойств начинается с андерскора ?
и где пхпдоки блеать ??
|
|
|
|
|
Записан
|
Буратино дрочил, дрочил и сгорел
Java и JavaScript это абсолютно разные вещи !!!
Господа, вы хуйня.
девушки краснели, отворачивались но порнуху продолжали смотреть

|
|
|
|
phpdude ↓
|
 |
|
06 Октябрь, 2010, 09:49:17 , спустя 1 минуту 35 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
я - ЭМО
Группа: в ухо Карма: 344
Сообщений: 20790 Сила слова: 1.65
|
NRG, суровый доебчивый пацик! Спустя 24 секунды добавил if (!isset($this->aInfo[strtolower($aInfo[0])])) {
$this->aInfo[strtolower($aInfo[0])] = $aInfo[1];
} else {
if(is_array($this->aInfo[strtolower($aInfo[0])])) {
$this->aInfo[strtolower($aInfo[0])][] = $aInfo[1];
} else {
$this->aInfo[strtolower($aInfo[0])] = array($this->aInfo[strtolower($aInfo[0])], $aInfo[1]);
}
} блеять ... Спустя 29 секунд добавил рефакторинг бы тут не помешал, хотя бы так ..
$aInfo0 = strtolower($aInfo[0]);
|
|
|
|
|
Записан
|
забанен. могу забанить других, пишите в личку BEER. Helping ugly people have sex since 1862.
|
|
|
|
Абырвалг ↓
|
 |
|
06 Октябрь, 2010, 09:50:01 , спустя 44 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
PHP Infected, симфоеб, маконенавистник
Группа: Джедаи Карма: 80
Сообщений: 6096 Сила слова: 1.31
|
ща, еще бутылочка пивка и будет тебе ревью) Спустя 17 секунд добавил вот так новость: 4 новых ответа
|
|
|
|
|
Записан
|
PHP does the job since 1995 Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
|
|
|
|
NRG ↓
|
 |
|
06 Октябрь, 2010, 09:51:03 , спустя 1 минуту 2 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
Headshot!MultiKill!
Группа: нинзя Карма: 777
Сообщений: 4700 Сила слова: 16.81
|
public function isAvailable() {
return (stripos($this->sInfo, $this->conf[$this->tldName]['server'][1]) === false) ? false : true;
}
public function isAvailable() {
return !(stripos($this->sInfo, $this->conf[$this->tldName]['server'][1]) === false);
}
|
|
|
|
|
Записан
|
Буратино дрочил, дрочил и сгорел
Java и JavaScript это абсолютно разные вещи !!!
Господа, вы хуйня.
девушки краснели, отворачивались но порнуху продолжали смотреть

|
|
|
|
Абырвалг ↓
|
 |
|
06 Октябрь, 2010, 09:53:01 , спустя 1 минуту 58 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
PHP Infected, симфоеб, маконенавистник
Группа: Джедаи Карма: 80
Сообщений: 6096 Сила слова: 1.31
|
ты вкурсе что именование протектед/приват методов/свойств начинается с андерскора ?
чушь говоришь. Это было нужно во времена php4, когда не было реальных PPP. Теперь же - только пальцы ломать, нажимая шифт. Кроме того, если работаешь с чужим кодом - можно проебать какой-то метод, забыв посмотреть - а есть ли такой, но начинающийся с "_" Спустя 44 секунды добавил я не говорю о второй доктрине, но даже zf2 будет без этой хуйни с _
|
|
|
|
|
Записан
|
PHP does the job since 1995 Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
|
|
|
|
NRG ↓
|
 |
|
06 Октябрь, 2010, 09:54:39 , спустя 1 минуту 38 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Headshot!MultiKill!
Группа: нинзя Карма: 777
Сообщений: 4700 Сила слова: 16.81
|
Абырвалг, когда будет, тогда и поговорим.
а чтоб впустую не балабольствовать достаточно просто пойти на сайт зенда и посмотреть кодинг стандарты
|
|
|
|
|
Записан
|
Буратино дрочил, дрочил и сгорел
Java и JavaScript это абсолютно разные вещи !!!
Господа, вы хуйня.
девушки краснели, отворачивались но порнуху продолжали смотреть

|
|
|
|
Абырвалг ↓
|
 |
|
06 Октябрь, 2010, 09:55:00 , спустя 21 секунду
|
НЕ ХУЕТА!
ХУЕТА!
|
PHP Infected, симфоеб, маконенавистник
Группа: Джедаи Карма: 80
Сообщений: 6096 Сила слова: 1.31
|
NRG,
return stripos($this->sInfo, $this->conf[$this->tldName]['server'][1]) !== false;
|
|
|
|
|
Записан
|
PHP does the job since 1995 Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
|
|
|
|
NRG ↓
|
 |
|
06 Октябрь, 2010, 09:57:04 , спустя 2 минуты 4 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
Headshot!MultiKill!
Группа: нинзя Карма: 777
Сообщений: 4700 Сила слова: 16.81
|
да, можно и так
|
|
|
|
|
Записан
|
Буратино дрочил, дрочил и сгорел
Java и JavaScript это абсолютно разные вещи !!!
Господа, вы хуйня.
девушки краснели, отворачивались но порнуху продолжали смотреть

|
|
|
|
Абырвалг ↓
|
 |
|
06 Октябрь, 2010, 10:08:08 , спустя 11 минут 4 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
|
|
|
SpartakuS ↓
|
 |
|
06 Октябрь, 2010, 10:18:17 , спустя 10 минут 9 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: Адекваты Карма: 32
Сообщений: 2444 Сила слова: 1.31
|
ты вкурсе что именование протектед/приват методов/свойств начинается с андерскора ?
вкурсе. Просто как то неудобно писать _ перед методами и переменными. Вот и игнорирую это правило(.
и где пхпдоки блеать ??
В таких маленьких классах пишу их обычно после того, как привожу класс в финальное состояне. А тут еще типа бетта версия чтоли.
блеять ...
да пожалуй.
NRG, угу. Сеньк.
|
|
|
|
|
Записан
|
 цска ебаное гавно.
|
|
|
|
OFF ↓
|
 |
|
06 Октябрь, 2010, 10:57:12 , спустя 38 минут 55 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: Адекваты Карма: 11
Сообщений: 299 Сила слова: 3.68
|
SpartakuS, Спасибо. Я возьму это.
|
|
|
|
|
Записан
|
Я клёвый
|
|
|
|
Troy ↓
|
 |
|
07 Октябрь, 2010, 03:21:18 , спустя 16 часов 24 минуты 6 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: Джедаи Карма: 45
Сообщений: 2393 Сила слова: 1.88
|
Пишу всегда приват методы с _ , читабельно
|
|
|
|
|
Записан
|
|
|
|
|