Проверка свободности домена средствами PHP

kruglov

Новичок
Даниил
Вы сами программист или погулять вышли?
Готовые решения просят в другом разделе.
 

Аntоn

Новичок
Автор оригинала: Даниил
Ээ... Пару уточнений, 1. как в функции ответить что свободен или нет.
Если функция возвращает 1, значит свободен, если 0, значит занят, если -1 - сервер не откликнулся.
 

3D

Новичок
А никто не подскажет адреса доступных Whois серверов для проверки доменов не в зоне RU?
 

Даниил

Mc. Shinoda
Если функция возвращает 1, значит свободен, если 0, значит занят, если -1 - сервер не откликнулся.
Т.е. туда где функция возращает значение например return 0, туда и писать то, что скрипт должен вывести на страницу?

-~{}~ 20.01.06 12:21:

Сделал так, почему то не работает:

PHP:
<?

check();

function check() 
{ 
    if(($ns = fsockopen("whois.ripn.net",43)) == false) 
    { 
        return -1; 
        echo "Сервер не отвечает, повторите запрос позже!<br />
	<a href='javascript:history.back();' style='color:black'>Назад</a>.";
    } 
    else 
    {   $dnname = htmlspecialchars($_POST['dname']);
        $dnzone = htmlspecialchars($_POST['dzone']);
        fputs($ns,"$dnname.$dnzone\n"); 
        while(!feof($ns)) 
        { 
            $rawoutput = $rawoutput.fgets($ns,128); 
        } 
        fclose($ns); 
        if(ereg("no entries found",$rawoutput)) 
        { 
            return 1; 
	    echo "<font color='green'><b>Поздравляем, домен $host свободен!</b></font><br />
		Вы можете зарегистрировать его прямо <a href='index.php?act=domainreg' 		

 style='color:black'><u>сейчас</u></a>.<br />
		<a href='javascript:history.back();' style='color:black'>Назад</a>.";
        } 
        else 
        { 
            return 0; 
	    echo "<font color='red'><b>К сожалению домен $host уже занят.</b></font><br> 
		<a href='javascript:history.back();' style='color:black'>Назад</a>.";  
        } 
   	 } 
}

?>
 

3D

Новичок
Даниил
<?
if (check() ){
echo "<font color='green'><b>Поздравляем, домен $host свободен!</b></font><br />
Вы можете зарегистрировать его прямо <a href='index.php?act=domainreg'

style='color:black'><u>сейчас</u></a>.<br />
<a href='java script:history.back();' style='color:black'>Назад</a>.";

}else{
echo "<font color='red'><b>К сожалению домен $host уже занят.</b></font><br>
<a href='java script:history.back();' style='color:black'>Назад</a>.";

}

?>
 

Даниил

Mc. Shinoda
Сделав так:

PHP:
<?
if (check() == "1" ){
echo "<font color='green'><b>Поздравляем, домен $host свободен!</b></font><br /> 
Вы можете зарегистрировать его прямо <a href='index.php?act=domainreg' 

style='color:black'><u>сейчас</u></a>.<br /> 
<a href='javascript:history.back();' style='color:black'>Назад</a>."; 
}
else if (check() == "0"){
echo "<font color='red'><b>К сожалению домен $host уже занят.</b></font><br> 
<a href='javascript:history.back();' style='color:black'>Назад</a>."; }
else { echo "Сервер не отвечает, повторите запрос позже!<br /> 
<a href='javascript:history.back();' style='color:black'>Назад</a>."; }
?>
Он отвечает, что все домены заняты, если даже ввожу те, что свободны.
 

3D

Новичок
function check($name,$zone) {

if(($ns = fsockopen("whois.ripn.net",43)) == false)
return -1;
else {
fputs($ns,"$name.$zone\n");
while(!feof($ns)) {
$rawoutput = $rawoutput.fgets($ns,128);
}
fclose($ns);
if(ereg("no entries found",$rawoutput))
return 1;
else return 0;
}
}


$dnname = htmlspecialchars($_POST['dname']);
$dnzone = htmlspecialchars($_POST['dzone']);

switch (check($dname,$dname)){
case 0 : echo 'облом';break;
case 1 : echo 'OK'; break;
} else echo 'ошибка';
?>


А как Вы отформатированный php код на форум оправляете?
 

Даниил

Mc. Shinoda
в тегах php.

-~{}~ 20.01.06 21:46:

3D, всёравно гонит, что домены заняты. =(

-~{}~ 21.01.06 13:27:

?
 

Аntоn

Новичок
Автор оригинала: Даниил
в тегах php.

-~{}~ 20.01.06 21:46:

3D, всёравно гонит, что домены заняты. =(

-~{}~ 21.01.06 13:27:

?
Код:
<body>
<?php
function check($name,$zone)
{ 
	if(($ns = fsockopen("whois.ripn.net",43)) == false) 
	{
		return -1;
	}
	else
	{
		fputs($ns,"$name.$zone\n"); 
		while(!feof($ns))
		{ 
			$rawoutput = $rawoutput.fgets($ns,128);
		} 
		fclose($ns); 
		if(ereg("No entries found",$rawoutput))
		{ 
			return 1;
		}
		else
		{
			return 0;
		}
	}
}

$domain = $_POST['domain']; 
$zone = $_POST['zone']; 
switch(check($domain,$zone))
{
	case 0 : echo('облом'); break;
	case 1 : echo('OK'); break;
	case -1 : echo('ошибка'); break;
}
?>
<form action="<? $PHP_SELF ?>" method="post">
<input name="domain">.<input name="zone">
<input type="submit" value="Проверить">
</body>
Проверил у себя - работает.
 

Даниил

Mc. Shinoda
А у меня не на хостинге не на локалке не пашет.

-~{}~ 21.01.06 21:53:

Всегда говорит OK.
 

Аntоn

Новичок
Автор оригинала: Даниил
А у меня не на хостинге не на локалке не пашет.

-~{}~ 21.01.06 21:53:

Всегда говорит OK.
Только что проверил:
в первое текстовое поле ввел "mail"
во второе - "ru" (без точки)
выдал "облом"

так что у меня все пашет.

-~{}~ 21.01.06 22:20:

Работает, правда, только для зон .ru и .su
Чтобы другие проверять, надо нарыть в нете список whois серверов по зонам и их ответов.
 
Сверху