checkA.php,php window平台模拟checkdnsrr函数检测_php

在php的系统函数中有一个checkdnsrr函数,该函数的作用是根据一个给定的host name(域名)或者IP地址检查它是否有DNS记录,目的就是检验它是否真实存在。但是该函数仅可以在linux系统下使用,并不支持windows平台。下面是网上搜集到的一个hack的方法,实现在window平台上模拟checkdnsrr函数来检测一个email是否存在的功能!

code

if(!function_exists('checkdnsrr')){ function checkdnsrr($host,$type=''){ if(!empty($host)){ $type=(empty($type))?'MX':$type; exec('nslookup -type='.$type.' '.escapeshellcmd($host),$result); $it=new ArrayIterator($result); foreach(new RegexIterator($it,'~^'.$host.'~',RegexIterator::GET_MATCH) as $result){ if($result){ return true; } } } return false; } }

1

if(!function_exists('checkdnsrr')){functioncheckdnsrr($host,$type=''){if(!empty($host)){$type=(empty($type))?'MX':$type;exec('nslookup -type='.$type.' '.escapeshellcmd($host),$result);$it=newArrayIterator($result);foreach(newRegexIterator($it,'~^'.$host.'~',RegexIterator::GET_MATCH)as$result){if($result){returntrue;}}}returnfalse;}}

接下来我来介绍一下该函数的参数:

bool checkdnsrr ( string $host [, string $type = "MX" ] )

第一个参数我们就不说了,就是域名或者ip

第二个参数是解析类型,分别有:

A (Address) 记录     是指定主机名(或域名)对应的IP地址记录。

MX 记录              是指定邮件交换记录(默认)

NS 记录              是指定域名服务器的记录,指定该域名由哪个DNS来进行解析。

SOA记录              一般在辅助的dns服务器里才用到,用来指定谁是主服务器。

PTR记录              从ip指向域名的反向解析记录

CNAME记录            别名记录

AAAA记录             是一个指向IPv6的记录

A6记录               同上

SRV记录              它是DNS服务器的数据库中支持的一种资源记录的类型,一般是为Microsoft的活动目录设置时的应用。

TXT记录              文本信息

ANY记录              任何记录,所有数据类型

您可能感兴趣的文章

php利用filter函数验证邮箱、url和ip地址的方法

php获取汉字拼音首字母的函数(真正可以使用的)

Sphinx在windows下安装使用[支持中文全文检索]

php判断函数,类,类方法是否存在

php利用session_set_save_handler()函数将session保存到mysql数据库中

windows环境下mysql数据库的主从同步备份步骤

php获取目录所有文件并将结果保存到数组的程序

php 模拟get_headers函数

欢迎大家阅读《php window平台模拟checkdnsrr函数检测_php》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码

e7ce419cf2d6ad34d01da2ceb8829eed.png

微信 赏一包辣条吧~

023a57327877fb4402bcc76911ec18ea.png

支付宝 赏一听可乐吧~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
下面是一个示例代码,可以实现您的要求: ```python import sys from PySide6.QtWidgets import QApplication, QMainWindow, QWidget, QLabel, QComboBox, QCheckBox, QPushButton, QTableWidget, QTableWidgetItem, QVBoxLayout, QHBoxLayout, QTableWidgetItem, QGridLayout class MainWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("MainWindow") # 设置第一个Widget self.widget1 = QWidget() self.layout1 = QGridLayout(self.widget1) self.label1 = QLabel("textlabel1") self.combo1 = QComboBox() self.combo1.addItems(["Option 1", "Option 2", "Option 3"]) self.label2 = QLabel("textlabel2") self.check1 = QCheckBox("CheckBox1") self.check2 = QCheckBox("CheckBox2") self.label3 = QLabel("textlabel3") self.checkA = QCheckBox("CheckBoxA") self.checkB = QCheckBox("CheckBoxB") self.button = QPushButton("Show/Hide Second Widget") self.button.clicked.connect(self.show_hide_second_widget) self.layout1.addWidget(self.label1, 0, 0) self.layout1.addWidget(self.combo1, 0, 1) self.layout1.addWidget(self.label2, 1, 0) self.layout1.addWidget(self.check1, 1, 1) self.layout1.addWidget(self.check2, 1, 2) self.layout1.addWidget(self.label3, 2, 0) self.layout1.addWidget(self.checkA, 2, 1) self.layout1.addWidget(self.checkB, 2, 2) self.layout1.addWidget(self.button, 3, 0) # 设置第二个Widget self.widget2 = QWidget() self.layout2 = QVBoxLayout(self.widget2) self.table1 = QTableWidget() self.table1.setRowCount(3) self.table1.setColumnCount(2) self.table1.setHorizontalHeaderLabels(["CheckBox", "ComboBox"]) self.table2 = QTableWidget() self.table2.setRowCount(3) self.table2.setColumnCount(2) self.table2.setHorizontalHeaderLabels(["CheckBox", "ComboBox"]) self.table3 = QTableWidget() self.table3.setRowCount(3) self.table3.setColumnCount(2) self.table3.setHorizontalHeaderLabels(["CheckBox", "ComboBox"]) self.layout2.addWidget(self.table1) self.layout2.addWidget(self.table2) self.layout2.addWidget(self.table3) self.widget2.hide() # 设置MainWindow中的布局 self.central_widget = QWidget() self.central_layout = QHBoxLayout(self.central_widget) self.central_layout.addWidget(self.widget1) self.central_layout.addWidget(self.widget2) self.setCentralWidget(self.central_widget) def show_hide_second_widget(self): if self.widget2.isVisible(): self.widget2.hide() else: self.widget2.show() def print_values(self): print("Table 1:") for row in range(self.table1.rowCount()): cbox = self.table1.cellWidget(row, 0) combobox = self.table1.cellWidget(row, 1) print(cbox.text(), combobox.currentText()) print("Table 2:") for row in range(self.table2.rowCount()): cbox = self.table2.cellWidget(row, 0) combobox = self.table2.cellWidget(row, 1) print(cbox.text(), combobox.currentText()) print("Table 3:") for row in range(self.table3.rowCount()): cbox = self.table3.cellWidget(row, 0) combobox = self.table3.cellWidget(row, 1) print(cbox.text(), combobox.currentText()) app = QApplication(sys.argv) window = MainWindow() window.show() app.exec_() ``` 上面的代码中,第一个Widget使用了QGridLayout布局,第二个Widget使用了QVBoxLayout布局。在第二个Widget中,使用了三个QTableWidget来显示表格,每个表格都有两列,第一列是QCheckBox,第二列是QComboBox。在MainWindow中,使用了QHBoxLayout布局,将第一个Widget和第二个Widget放在一起。实现了点击按钮可以显示/隐藏第二个Widget。还实现了一个print_values方法,可以用来打印所有CheckBox和ComboBox的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值