묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
php 함수에 대한 질문입니다.
2004.02.29 17:33
/////////// test.php /////////////////////
$email="daejin5282@orgio.net";
list($user,$host) = explode("@",$email);
if(checkdnsrr($host,"MX") or checkdnsrr($host,"A")) echo "사용가능";
else echo "사용불가";
//////////////////////////////////////////
분명히 php 메뉴얼에 보면 아래와 같이 나옵니다
checkdnsrr -- 인터넷 호스트 네임이나 IP 어드레스에 대응되는 DNS 레코드를 체크함
int checkdnsrr ( string host [, string type])
host에 대응이 되는 type의 레코드를 DNS에서 찾습니다. 어떠한 레코드라도 발견이 되면 TRUE를 반환합니다.
그리고 레코드가 발견되지 않거나 에러가 발생하면 FALSE를 반환합니다.
type은 A, MX, NS, SOA, PTR, CNAME 중에 있거나 다른 것이 올수도 있습니다. 디폴트 값은 MX 입니다.
Host는 IP 어드레스이거나 호스트 네임이 될 수 있습니다.
그리고 제로보드의 member_join_ok.php 에서도 lib.php 를 include 시켜 사용하고 있는 함수로 알고 있습니다.
그런데 test.php 를 실행하여 보면
Fatal error: Call to undefined function: checkdnsrr() in~~~
이라는 에러 메시지가 출력됩니다.
php 에서 지원하는 함수일텐데 뭐가 치명적인 에러구.. 뭔 함수가 지정이 안되었다는것인지 모르겠습니다....
다른 함수 즉 gethostbyaddr(), gethostbyname(), gethostbynamel() 등은 전부 이상없이 실행됩니다.
이게 워찌 된일인지 모르겠습니다. 함수를 잘못사용하고 있는것인가요?
아님 제 환경에 문제가 있는것인지요.. apach 대신에 iis 를 사용하는것 뿐인데요.. ㅡ.ㅜ
테스트 환경은..
windows 2000 server + iis + php + mysql 입니다.
$email="daejin5282@orgio.net";
list($user,$host) = explode("@",$email);
if(checkdnsrr($host,"MX") or checkdnsrr($host,"A")) echo "사용가능";
else echo "사용불가";
//////////////////////////////////////////
분명히 php 메뉴얼에 보면 아래와 같이 나옵니다
checkdnsrr -- 인터넷 호스트 네임이나 IP 어드레스에 대응되는 DNS 레코드를 체크함
int checkdnsrr ( string host [, string type])
host에 대응이 되는 type의 레코드를 DNS에서 찾습니다. 어떠한 레코드라도 발견이 되면 TRUE를 반환합니다.
그리고 레코드가 발견되지 않거나 에러가 발생하면 FALSE를 반환합니다.
type은 A, MX, NS, SOA, PTR, CNAME 중에 있거나 다른 것이 올수도 있습니다. 디폴트 값은 MX 입니다.
Host는 IP 어드레스이거나 호스트 네임이 될 수 있습니다.
그리고 제로보드의 member_join_ok.php 에서도 lib.php 를 include 시켜 사용하고 있는 함수로 알고 있습니다.
그런데 test.php 를 실행하여 보면
Fatal error: Call to undefined function: checkdnsrr() in~~~
이라는 에러 메시지가 출력됩니다.
php 에서 지원하는 함수일텐데 뭐가 치명적인 에러구.. 뭔 함수가 지정이 안되었다는것인지 모르겠습니다....
다른 함수 즉 gethostbyaddr(), gethostbyname(), gethostbynamel() 등은 전부 이상없이 실행됩니다.
이게 워찌 된일인지 모르겠습니다. 함수를 잘못사용하고 있는것인가요?
아님 제 환경에 문제가 있는것인지요.. apach 대신에 iis 를 사용하는것 뿐인데요.. ㅡ.ㅜ
테스트 환경은..
windows 2000 server + iis + php + mysql 입니다.
댓글 4
-
호경
2004.02.29 17:48
-
전재근
2004.02.29 17:52
그럼 getmxrr 를 사용해야 하긋네요..
호경님 감사드립니다^^ -
전재근
2004.02.29 17:59
헐 getmxrr 두.. -
전재근
2004.03.01 03:47
쿨럭.. 윈도우용이라..^^;
질문을 가끔하는데 호경님께 너무 많은 도움만 받게 됩니다..
정말 감사드려요..
윈도우용 복사해 왔습니다~;;
<?php
/******************************************************
These functions can be used on WindowsNT to replace
their built-in counterparts that do not work as
expected.
checkdnsrr_winNT() works just the same, returning true
or false
getmxrr_winNT() returns true or false and provides a
list of MX hosts in order of preference.
*******************************************************/
function checkdnsrr_winNT( $host, $type = '' )
{
if( !empty( $host ) )
{
# Set Default Type:
if( $type == '+ '+ '' ) $type = "MX";
@exec( "nslookup -type=$type $host", $output );
while( list( $k, $line ) = each( $output ) )
{
# Valid records begin with host name:
if( eregi( "^$host", $line ) )
{
# record found:
return true;
}
}
return false;
}
}
function getmxrr_winNT( $hostname, &$mxhosts )
{
if( !is_array( $mxhosts ) ) $mxhosts = array();
if( !empty( $hostname ) )
{
@exec( "nslookup -type=MX $hostname", $output, $ret );
while( list( $k, $line ) = each( $output ) )
{
# Valid records begin with hostname:
if( ereg( "^$hostname\tMX preference = ([0-9]+), mail exchanger = (.*)$", $line, $parts ) )
{
$mxhosts[ $parts[1] ] = $parts[2];
}
}
if( count( $mxhosts ) )
{
reset( $mxhosts );
ksort( $mxhosts );
$i = 0;
while( list( $pref, $host ) = each( $mxhosts ) )
{
$mxhosts2[$i] = $host;
$i++;
}
$mxhosts = $mxhosts2;
return true;
}
else
{
return false;
}
}
}
if ( getmxrr_winNT( "microsoft.com", $hosts ) )
{
echo count($hosts)."
";
for ($i=0; $i<=count($hosts); $i++){
echo $hosts[$i];}
}
?>