PHP与MySQL程序设计 第四版 第十六章 网络 笔记
本章主要内容
- DNS、服务器和服务。php提供大量函数用于获取与网络内部构件、DNS、协议和因特网地址模式有关的新信息。
- 通过PHP发送电子邮件。
- 常见网络任务
253 DNS
DNS允许使用域名来代替相应的ip地址
1.检测DNS记录是否存在
checkdnsrr()函数检查是否存在DNS记录 给指定的主机(域名)或者IP地址做DNS通信检查
(ps:可以用这个来检查给的邮箱地址的域是否存在)
bool checkdnsrr ( string $host [, string $type = "MX" ] )
host
主机(host)可以是一个IP地址也可以是域名。
type
解析记录类型(type)可能是下面这些类型中的任何一个:A,MX,NS,SOA,PTR,CNAME,AAAA,A6, SRV,NAPTR,TXT 或者 ANY。
$res=checkdnsrr("zhangxingju.com");
var_dump($res);
//bool(true)
2.DNS资源记录
dns_get_record()函数返回一个数组,包含与hostname指定域有关的各种DNS资源记录。
array dns_get_record ( string $hostname [, int $type = DNS_ANY [, array &$authns [, array &$addtl [, bool &$raw = false ]]]] )
(ps:这个参数 是官方文档上的 书上无这个参数 应该新加的)
$res=dns_get_record("zhangxingju.com",DNS_A);
var_dump($res);
/*array(2) {
[0]=>
array(5) {
["host"]=>
string(15) "zhangxingju.com"
["class"]=>
string(2) "IN"
["ttl"]=>
int(200)
["type"]=>
string(1) "A"
["ip"]=>
string(13) "221.236.7.209"
}
[1]=>
array(5) {
["host"]=>
string(15) "zhangxingju.com"
["class"]=>
string(2) "IN"
["ttl"]=>
int(200)
["type"]=>
string(1) "A"
["ip"]=>
string(13) "221.236.7.227"
}
}*/
3.getmxrr()函数获取hostname所指定主机的MX记录
bool getmxrr ( string $hostname , array &$mxhosts [, array &$weight ] )
可以看到下面的代码,返回了我的网站的MX记录为QQ邮箱的解析
getmxrr("zhangxingju.com",$mxhosts);
var_dump($mxhosts);
/*array(1) {
[0]=>
string(15) "mxdomain.qq.com"
}*/
257页 服务
1.获取服务器的端口号 getservbyname()
int getservbyname ( string $service , string $protocol )
service 对应的服务必须在/etc/services文件中指定.protocol参数指定需要此服务的是tcp还是udp部分(ps:udp是什么)
例:
$res=getservbyname("http","tcp");
var_dump($res); //80
2.获取端口号的服务名 getservbyport()
string getservbyport ( int $port , string $protocol )
protocol参数指定需要此服务的是tcp还是udp部分
例:
$res=getservbyport ("80","tcp");
var_dump($res); //string(4) "http"
257 建立套接字连接
经常需要查询服务,包括本地查询和远程查询,通常是通过与服务建立套接字连接完成。函数fsockopen()可以实现这一点
resource fsockopen ( string $hostname [, int $port = -1 [, int &$errno [, string &$errstr [, float $timeout = ini_get("default_socket_timeout") ]]]] )
在端口port上建立与target所表示资源的连接,在可选参数errno和errstring中返回错误信息,可选参数timeout设置时间限值,以秒为单位,表示函数在失败前多长时间内会继续尝试建立连接。
书上的一个例子,扫描本机端口,就测试前几次有数据 后来测试别的网站,再回来测试就失败了。。没搞懂
ini_set("max_execution_time",120);
$rangeStart = 0;
$rangStop = 1;
$target = "localhost";
$range =range($rangeStart, $rangStop);
echo "扫描端口的结果".'
';
foreach ($range as $port) {
$res = @fsockopen($target, $port,$errno,$errstr,1);
if($res){echo $port."
";}
}
259 邮件
主要介绍mail()函数的相关配置 注意一些配置与平台有关 如windows和unix不一样
1.SMTP = string 作用域 PHP_INI_ALL 默认值 localhost
仅用于 Windows:PHP 在 mail() 函数中用来发送邮件的 SMTP 服务器的主机名称或者 IP 地址。
2.sendmail_from 作用域 PHP_INI_ALL 默认值NULL
在 Windows 下用 PHP 发送邮件时的“From:”邮件地址的值。该选项同时设置了 “Return-Path:”头。
3.sendmail_path 作用域 PHP_INI_SYSTEM 默认值NULL (手册里是NULL 书上为 默认的sendmail路径)
这里就参考官方文档吧 http://php.net/manual/zh/mail.configuration.php#ini.sendmail-path
4.smtp_port = integer 作用域:PHP_INI_ALL 默认值25
仅用于 Windows:SMTP 服务器的端口号
5.mail.force_extra_parameters = string 作用域 PHP_INI_SYSTEM 默认值NULL (手册上没这个了 不知是否取消了,增加了一些其他的)
向sendmail程序传递额外的标志,注意 这里传递的任何参数都将替换通过mail()函数的add1_params参数所传递的标志
260 使用php脚本发送电子邮件
mail()函数
bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] ) (ps:这里为手册的 与书上有点区别)
$res = mail("971328672@qq.com","subject","content");
var_dump($res); //测试 失败。。
平常用都是用那些邮箱网站提供的smtp来做发邮件的,估计还需要弄什么吧
后面关于PEAR发邮件和 常见网络任务没有做笔记了 有需要的时候翻书看下