Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查域是否可用或不使用PHP?_Php - Fatal编程技术网

检查域是否可用或不使用PHP?

检查域是否可用或不使用PHP?,php,Php,如果我有一个类似www.example.com的域,我想使用DNS记录(而不是whois)检查它是否可用 是否可以使用PHP实现这一点?一些将完成这项工作的API 您可以使用checkdnsrr或gethostbyname: <?php $domain = 'example.com'; if ( gethostbyname($domain) != $domain ) { echo "DNS Record found"; } else { echo "NO DNS Rec

如果我有一个类似
www.example.com
的域,我想使用DNS记录(而不是whois)检查它是否可用


是否可以使用PHP实现这一点?

一些将完成这项工作的API


您可以使用checkdnsrr或gethostbyname:

<?php
 $domain = 'example.com';
 if ( gethostbyname($domain) != $domain ) {
  echo "DNS Record found";
 }
 else {
  echo "NO DNS Record found";
 }
?>
文件:

示例checkdnsrr:

<?php
 if ( checkdnsrr('example.com.', 'ANY') ) {
  echo "DNS Record found";
 }
 else {
  echo "NO DNS Record found";
 }
?>

gethostbyname示例:

<?php
 $domain = 'example.com';
 if ( gethostbyname($domain) != $domain ) {
  echo "DNS Record found";
 }
 else {
  echo "NO DNS Record found";
 }
?>


我应该选择这个软件包,它支持许多顶级域,并且是以面向对象的方式编写的。

这取决于您所说的“可用”是什么意思。如果您的意思是可注册,那么单凭DNS信息是无法确定的。必须使用whois系统。一种简单的测试方法是使用一个未使用的域名,并将名称服务器设置为无效。DNS将不可用,但域仍无法注册。我刚刚测试了checkdnsrr()、gethostbyname()和dns_get_record()的建议。所有这些都表明没有为无法注册的域返回DNS

以下问题提供了更多细节:
所有答案都建议使用一些PHP库。香草PHP(版本5到7)中有一个函数,用于获取特定域的DNS记录

使用以下PHP

sizeof(dns\u get\u记录(“example.com”))
您将获得一个与DNS记录数对应的整数。因此,考虑类似的事情:

if (sizeof(dns_get_record("example.com")) > 0) echo "Domain has DNS records";
else echo "Domain does not have any DNS records";

如果“可用”是指可供购买或注册,则无法使用DNS可靠地确定这一点。例如,
moose9moose2.ph
可用,但有A记录。而
ph.moose9moose2
没有DNS记录,但不可用于注册。您可以尝试添加规则以涵盖所有可能的情况,但您可能永远也无法完成。@David,没错,但如果dns还不够,您会推荐什么替代方法?请参阅您重复的问题:Whois。很难说出您的问题是什么。您的问题是“如何判断一个域是否在PHP中可用”、“如何判断一个域是否在PHP中注册”还是“如何在PHP中进行DNS”?你为什么不告诉我们你到底想做什么,然后问我们怎样做才是最好的?你的问题变得像“我想帮助我的祖母买房子,但我想用手提钻来做。我怎么才能做到最好?”问题是:“我如何判断一个域名是否可以使用PHP(使用DNS而不是whois)?”这是一个问题。这显示了所有内容的可用性…例如-if(checkdnsrr('examjkasdjkbasdle.com','ANY'))){echo“找到DNS记录”}否则{echo“找不到DNS记录”}下面是使用gethostbyname的第二个示例:解决方案:要使checkdnsrr正常工作,必须在域名后添加句点,例如:checkdnsrr('example.com.”,“ANY”)抱歉,我已经编辑了我的答案,以包括丢失的点,并包括我以前的注释和gethostbyname示例:),如果域处于挂起删除状态,则这两个选项都不起作用。我认为最好使用注册器api或解析whois信息。