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。

dns

$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:这个参数 是官方文档上的 书上无这个参数 应该新加的)

dns_get_record

$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发邮件和 常见网络任务没有做笔记了 有需要的时候翻书看下