使用php get_headers判断url的真实有效性。
还没有了解过php get_headers函数用法的朋友,可以参考本站文章:php get_headers函数讲解及用法介绍。
了解了该函数,大家便可以知道该函数会返回一个HTTP请求的头文件信息,信息格式基本如下:
1)、
Array
(
[0] => HTTP/1.1 200 OK
[1] => Date: Sat, 29 May 2004 12:28:13 GMT
[2] => Server: Apache/1.3.27 (Unix) (Red-Hat/Linux)
[3] => Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
[4] => ETag: "3f80f-1b6-3e1cb03b"
[5] => Accept-Ranges: bytes
[6] => Content-Length: 438
[7] => Connection: close
[8] => Content-Type: text/html
)
2)、
Array
(
[0] => HTTP/1.0 404 Not Found
[1] => Date: Sat, 29 May 2004 12:28:13 GMT
[2] => Server: Apache/1.3.27 (Unix) (Red-Hat/Linux)
[3] => Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
[4] => ETag: "3f80f-1b6-3e1cb03b"
[5] => Accept-Ranges: bytes
[6] => Content-Length: 438
[7] => Connection: close
[8] => Content-Type: text/html
)
分析:
如果判断该url是否有效存在,则通过数组中的第一个元素值来判断的。
服务器返回 200 即文件正确返回,返回 404 即文件不存在,这样就可以很容易判断一个url是否存在了。
很多时个,就是这些小函数帮了大忙,很多不错的获取header信息的小工具,原理与此基本相同,建议大家牢固掌握get_headers()函数的用法。
get_headers() 函数
是PHP系统级函数,返回一个包含有服务器响应一个 HTTP 请求所发送的标头的数组。
如果失败则返回 FALSE 并发出一条 E_WARNING 级别的错误信息(可用来判断远程文件是否存在)。
函数定义
array get_headers ( string $url [, int $format = 0 ] )
参数
url 目标 URL
format 如果将可选的 format 参数设为 1,则 get_headers() 会解析相应的信息并设定数组的键名。
来看一个具体的例子。
$url='http://www.';
print_r(get_headers($url));
print_r(get_headers($url,1));
?>
输出结果:
Array
(
[0] => HTTP/1.1 200 OK
[1] => Date: Sat, 29 May 2004 12:28:13 GMT
[2] => Server: Apache/1.3.27 (Unix) (Red-Hat/Linux)
[3] => Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
[4] => ETag: "3f80f-1b6-3e1cb03b"
[5] => Accept-Ranges: bytes
[6] => Content-Length: 438
[7] => Connection: close
[8] => Content-Type: text/html
)
Array
(
[0] => HTTP/1.1 200 OK
[Date] => Sat, 29 May 2004 12:28:14 GMT
[Server] => Apache/1.3.27 (Unix) (Red-Hat/Linux)
[Last-Modified] => Wed, 08 Jan 2003 23:11:55 GMT
[ETag] => "3f80f-1b6-3e1cb03b"
[Accept-Ranges] => bytes
[Content-Length] => 438
[Connection] => close
[Content-Type] => text/html
)
有时为了获取服务器端响应信息时,经常会用到get_headers()函数,建议大家多写些代码,实际测试下,以加深理解。
PHPMailer类的官方网站:http://phpmailer.worxware.com/
下载地址:http://code.google.com/a/apache-extras.org/p/phpmailer/downloads/list
代码发下:
/**
* PHPMailer邮件发送
* Edit www.
*/
require_once('include/PHPMailer/class.phpmailer.php'); //导入PHPMAILER类
$mail = new PHPMailer(); //创建实例
$mail -> CharSet='utf-8'; //设置字符集
$mail -> SetLanguage('ch','include/PHPMailer/language/'); //设置语言类型和语言文件所在目录
$mail -> IsSMTP(); //使用SMTP方式发送
$mail -> SMTPAuth = true; //设置服务器是否需要SMTP身份验证
$mail -> Host = SMTP_SERVER; //SMTP 主机地址
$mail -> Port = SMTP_SERVER_PORT; //SMTP 主机端口
$mail -> From = SMTP_USER_MAIL; //发件人EMAIL地址
$mail -> FromName = 'jasonxu'; //发件人在SMTP主机中的用户名
$mail -> Username = SMTP_USER_NAME; //发件人的姓名
$mail -> Password = SMTP_USER_PASS; //发件人在SMTP主机中的密码
$mail -> Subject = '测试邮件的标题'; //邮件主题
$mail -> AltBody = 'text/html'; //设置在邮件正文不支持HTML时的备用显示
$mail -> Body = '测试邮件的内容';//邮件内容做成
$mail -> IsHTML(true); //是否是HTML邮件
$mail -> AddAddress('chinajason2008#gmail.com','jasonxu'); //收件人的地址和姓名
$mail -> AddReplyTo('chinajason2008#gmail.com','jasonxu'); //收件人回复时回复给的地址和姓名
$mail -> AddAttachment('include/id.csv','att.csv');//附件的路径和附件名称
if(!$mail -> Send()) //发送邮件
var_dump($mail -> ErrorInfo); //查看发送的错误信息
?>
注意:phpmailer如果添加附件的时候,在附件名称里一定要写明附件的后缀,如果不写明附件后缀,默认的附件后缀会是.txt。
比如$mail -> AddAttachment('include/id.csv','att');//附件的路径和附件名称
如果向上面一样添加附件发送,则最终接到的附件可能是att.txt。
AddAttachment可以设置附件编码方式和附件类型,比如上面的附件添加也可以设置为
$mail -> AddAttachment('include/id.csv','att.csv',"binary","text/comma-separated-values");//附件的路径和附件名称、
附件的编码方式大概有这么几种:支持8bit, base64, binary, and quoted-printable 编码
而CSV可接受的MIME Type
· application/octet-stream
· text/comma-separated-values(推荐)
· text/csv
所以,csv格式文件的附件类型可以是上面三种中的任意一种。