Интересная функция как gethostbyaddr()

Dareczek

Новичок
Наткнулсья на такую прикольную функцию как gethostbyaddr(). В нее нужно ставить ИП адресс и тогда узнаем имя хоста, но это не в этом суть. Нашел мини скрипт где это можно применить (хотя мне самое главное понять как там работает это все). Вот выложу эту штучку )
PHP:
class Whois
{
    /*
     * Optional parameter for the server to be used for the lookup.
     * If this is not set, an appropriate whois server for the domain name
     * specified is automagically found by the Whois class. 
     * @type string
     * @access public
     */
    var $whois_server;
    /*
     * The timeout, in seconds, for the lookup. Default is 30. 
     * @type integer
     * @access public
     */
    var $timeout = 30;

    /*
     * Returns a string, with new-lines (\n) converted to non-breaking spaces (<BR>),
     * with details for the domain specified by $domain. 
     * @access public
     * @param string $domain the domain to lookup, excluding http:// and www
     * @return string the results of the whois
     */
    function lookup($domain)
    {
    	$result = "";
    	$parts  = array();
    	//$host   = "";

    	// .tv don't allow access to their whois
    	if (strstr($domain,".tv"))
    	{
    		$result = "'.tv' domain names require you to have an account to do whois searches.";
    	// New domains fix (half work, half don't)
    	} elseif (strstr($domain,".name") || strstr($domain,".pro") >0)
		{
    		$result = ".name,.pro require you to have an account to do whois searches.";
    	} else
		{
    		if (empty($this->whois_server))
    		{
    			$parts    = explode(".",$domain);
    			$testhost = $parts[sizeof($parts)-1];
    			$whoisserver   = $testhost . ".whois-servers.net";
    			$this->host     = gethostbyname($whoisserver);
    			$this->host     = gethostbyaddr($this->host);

    			if ($this->host == $testhost)
    			{
    				$this->host = "whois.internic.net";
    			}
    			flush();
    		}
    		$whoisSocket = fsockopen($this->host,43, $errno, $errstr, $this->timeout);

    		if ($whoisSocket)
    		{
    			fputs($whoisSocket, $domain . "\015\012");
    			while (!feof($whoisSocket))
    			{
    				$result .= fgets($whoisSocket,128) . "<br>";
    			}
    			fclose($whoisSocket);
    		}
    	}
    	return $result;
    }
}
Здесь +- все понятно, но от куда взялась $this->host? (Ради этого собственно и создал тему). Это уже занятая переменная (ну я имел ввиду такие как $_POST идт.). Пока только такой вопрос от куда взялась $this->host? Та переменная что выше ($result = "";) вроде непричем, так как через $this не к таким переменным а к переменным класа (var, public, etc.) Если что не судите строго )
 

keltanas

marty cats
PHP:
// Правильный ответ отсюда?
                $this->host     = gethostbyname($whoisserver);
                $this->host     = gethostbyaddr($this->host);
В чем, собственно, затруднение?
 

keltanas

marty cats
Dareczek
Не понятно ответить что хочешь вопрос твой как ты задал.
 

hell0w0rd

Продвинутый новичок
Как появились эти
PHP:
 $this->host     = gethostbyname($whoisserver);
                $this->host     = gethostbyaddr($this->host);
Ведь они неге не заданы выше как var $whois_server;
эм...
PHP:
$parts    = explode(".",$domain);
$testhost = $parts[sizeof($parts)-1];
$whoisserver   = $testhost . ".whois-servers.net";
$this->host     = gethostbyname($whoisserver);
Это вообще судя по всему какой-то древний код, наверное тогда еще не существовали ключевые слова вроде publiс, еще и аннотация @access стремная какая-то
В php если поле не объявлено выше, а к нем идет обращение - оно создается автоматически, public
но эта магия о которую можно спотыкнуться, поэтому так никто не делает
и вы где-то не там ищете
https://github.com/search?l=PHP&q=whois
 

Dareczek

Новичок
эм...
PHP:
$parts    = explode(".",$domain);
$testhost = $parts[sizeof($parts)-1];
$whoisserver   = $testhost . ".whois-servers.net";
$this->host     = gethostbyname($whoisserver);
Это вообще судя по всему какой-то древний код, наверное тогда еще не существовали ключевые слова вроде publiс, еще и аннотация @access стремная какая-то
В php если поле не объявлено выше, а к нем идет обращение - оно создается автоматически, public
но эта магия о которую можно спотыкнуться, поэтому так никто не делает
и вы где-то не там ищете
https://github.com/search?l=PHP&q=whois
Спасибо! Я очень блогодарен!
 
Сверху