PHP Cookbook读书笔记 – 第16章互联网服务

发送电子邮件

书中主要是以PEAR中的邮件发送类(Mail)来讲解的(关于如何在WIN系统下安装PEAR可以参考WIN下成功安装PEAR)。PEAR的MAIL类可以通过3种方式来发送电子邮件:

  1. 通过PHP内部的mail函数来发送
  2. 通过sendmail程序来发送
  3. 通过直接连接到一个smtp服务器发送邮件

书中主要以第一种方式来讲解,下面贴一个用SMTP发送邮件的例子

require_once('Mail.php');//包含mail.php函数$params = array('host' => 'smtp.sina.com','port' => '25','username' => 'yourname@sina.com','password' => 'yourpassword','auth' => true);//必须保证这一行$recipients = 'xxxx@sina.com'; //接收人,可以是一个数组来存放多个地址$headers['From']    = "yourname@sina.com";$headers['To']      = "xxxx@sina.com";$headers['Subject'] = "主题";$body = "内容";//选择smtp的发送方式,当然还支持mail()和sendmail$mail_object = &Mail::factory('smtp', $params);if (PEAR::isError($e = $mail_object->send($recipients, $headers, $body))) {die($e->getMessage() . "\n");}

通过IMAP或POP3读取邮件

这种方式主要用来读取邮件的内容,像开心网等都有个导入邮箱联系人的功能,我原来一直以为是通过这2个协议来实现的,后来查了下资料才发现,原来是通过cUrl实现的。

// open IMAP connection
$mail = imap_open('{mail.server.com:143}',      'username', 'password');
// or, open POP3 connection
$mail = imap_open('{mail.server.com:110/pop3}', 'username', 'password');// grab a list of all the mail headers
$headers = imap_headers($mail);// grab a header object for the last message in the mailbox
$last = imap_num_msg($mail);
$header = imap_header($mail, $last);// grab the body for the same message
$body = imap_body($mail, $last);// close the connection
imap_close($mail);

PHP访问FTP资源

通常有两种方式:

  1. PHP内置的FTP函数
  2. cURL扩展

下面是通过PHP内置函数实现的读取FTP的目录下的文件列表

set_time_limit(120);
$host="127.0.0.1";//主机名
$uname="username";//用户名
$pwd ="password";//密码
$c = ftp_connect($host) or die("Can't connect");
ftp_set_option($c,FTP_TIMEOUT_SEC,120);
ftp_login($c,$uname,$pwd) or die("Can't login");
ftp_pasv($c, TRUE);
$ddd = ftp_nlist($c,".");
ftp_close($c) or die("Can't close");
var_dump($ddd);
print("OK");

DNS相关函数

查询一个域名的ip地址:gethostbyname( )

查询一个IP上的域名(不完全可信):gethostbyaddr( )

一个域名可能绑定多个IP:gethostbynamel( )

获得mx记录:getmxrr( )

实现PING一个主机

PEAR提供的Net_Ping包可以实现这个功能

$results = $ping->ping('www.oreilly.com');
foreach($results as $result) { print "$result\n"; }
$results = $ping->ping('www.oreilly.com');
foreach($results as $result) { print "$result\n"; }

返回的信息是一个整块,需要其中的个别值还需要自己解析,实现的效果可能如下面显示的这样

PING www.oreilly.com (209.204.146.22) from 192.168.123.101 :32(60) bytes of data.
40 bytes from www.oreilly.com (209.204.146.22): icmp_seq=0 ttl=239time=96.704 msec
40 bytes from www.oreilly.com (209.204.146.22): icmp_seq=1 ttl=239time=86.567 msec
40 bytes from www.oreilly.com (209.204.146.22): icmp_seq=2 ttl=239time=86.563 msec
40 bytes from www.oreilly.com (209.204.146.22): icmp_seq=3 ttl=239time=136.565 msec
40 bytes from www.oreilly.com (209.204.146.22): icmp_seq=4 ttl=239time=86.627 msec-- - www.oreilly.com ping statistics  -- -
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/mdev = 86.563/98.605/136.565/19.381 ms

获取域名相关的信息

需要用到PEAR的另一个类Net_Whois,其中whois服务器的选择是这个功能的关键,如果不知道如何选择whois服务器,可以将$server用'whois.internic.net'替换:

require 'Net/Whois.php';
$server = 'whois.networksolutions.com';
$query  = 'example.org';
$data = Net_Whois::query($server, $query);

转载于:https://www.cnblogs.com/Excellent/archive/2011/11/21/2257227.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/380092.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python | 使用matplotlib.pyplot创建条形图

Problem statement: Using matplotlib.pyplot library in python draw a bar graph with two values for comparison, using different colors. 问题陈述:在python中使用matplotlib.pyplot库使用不同的颜色绘制带有两个值的条形图以进行比较。 Program: 程序&#…

输出以下的杨辉三角形(要求输入个数字,表示需要输出几行)

#include<stdio.h> int main() {int i,j,k,n,x,a[100][100];a[0][1]1;scanf("%d",&x);for(i1;i<x;i){for(j1;j<i;j){a[i][j]a[i-1][j-1]a[i-1][j];printf("%5d ",a[i][j]);//%5d 表示右对齐隔5个空格&#xff1b;}//同理&#xff0c;%-5d…

远控免杀专题(22)-SpookFlare免杀

转载&#xff1a;https://mp.weixin.qq.com/s/LfuQ2XuD7YHUWJqMRUmNVA 免杀能力一览表 几点说明&#xff1a; 1、上表中标识 √ 说明相应杀毒软件未检测出病毒&#xff0c;也就是代表了Bypass。 2、为了更好的对比效果&#xff0c;大部分测试payload均使用msf的windows/mete…

最新Asp.net源码推荐列表(4月7日)

好久没有在cnblogs给大家发布asp.net源码了&#xff0c;把最近整理的一些发给大家&#xff0c;希望对大家有所帮助&#xff0c;以后争取保持每周发布&#xff01;- WOBIZ第一季1.2版源码 Hits:29 2008-4-7 [结构图] [^][VS2005Access] 电子商务2.0软件是窝窝团队基于对互联网…

远控免杀专题(23)-SharpShooter免杀

转载&#xff1a;https://mp.weixin.qq.com/s/EyvGfWXLbxkHe7liaNFhGg 免杀能力一览表 几点说明&#xff1a; 1、上表中标识 √ 说明相应杀毒软件未检测出病毒&#xff0c;也就是代表了Bypass。 2、为了更好的对比效果&#xff0c;大部分测试payload均使用msf的windows/mete…

MySQL 发展史

一.MySQL 标志说明MySQL的海豚标志的名字叫“sakila”&#xff0c;它是由MySQL AB的创始人从用户在“海豚命名”的竞赛中建议的大量的名字表中选出的。获胜的名字是由来自非洲斯威士兰的开源软件开发者Ambrose Twebaze提供。根据Ambrose所说&#xff0c;Sakila来自一种叫SiSwat…

远控免杀专题(24)-CACTUSTORCH免杀

转载&#xff1a;https://mp.weixin.qq.com/s/g0CYvFMsrV7bHIfTnSUJBw 免杀能力一览表 几点说明&#xff1a; 1、上表中标识 √ 说明相应杀毒软件未检测出病毒&#xff0c;也就是代表了Bypass。 2、为了更好的对比效果&#xff0c;大部分测试payload均使用msf的windows/mete…

病毒的手工排除与分析(更新完毕)

作者简介杨京涛    8年以上的IT行业经验&#xff0c;理解企业需求&#xff0c;有企业ERP软件部署规划能力&#xff0c;有综合布线网络规划和管理能力。熟悉软件以及各类硬件&#xff0c;电话程控设备&#xff0c;各类网络设备的管理维护。有编程基础,熟悉VBA、脚本、批处理…

系统固件升级_固件和操作系统之间的差异

系统固件升级固件 (Firmware) Firmware is somewhere similar to software but it is not a software. Somehow it is a modified form of software. 固件与软件相似&#xff0c;但不是软件。 不知何故&#xff0c;它是软件的修改形式。 Firmware is fixed data or code that …

cobalt strick 4.0 系列教程 (5)--- 获取立足点

https://blog.ateam.qianxin.com/CobaltStrike4.0%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8C_%E4%B8%AD%E6%96%87%E7%BF%BB%E8%AF%91.pdf 0x01 客户端 System Profiler [即探针] System Profiler 是一个为客户端攻击提供的侦察工具。这个工具启动一个本地的 web 服务器&#xff0…

frame--转载

所谓框架便是网页画面分成几个框窗&#xff0c;同时取得多个 URL。只 要 <FRAMESET> <FRAME> 即可&#xff0c;而所有框架标记 要放在一个总起的 html 档&#xff0c;这个档案只记录了该框架 如何划分&#xff0c;不会显示任何资料&#xff0c;所以不必放入 <…

cobalt strick 4.0 系列教程(6)Payload Artifact 和反病毒规避

0x01 哲学 Strategic Cyber 责任有限公司会定期回答有关规避的问题。Cobalt Strike 是否能够绕过 AV 产品&#xff1f;它能绕过哪些 AV 产品&#xff1f;它多久检查一次&#xff1f; Cobalt Strike 默认的 Artifact 可能会被大多数终端安全解决方案拦截。规避不是 Cobalt Str…

【转】企业开发的困境与变局

原文&#xff1a;企业开发的困境与变局 文 / 刘江 算起来&#xff0c;《程序员》已经有几年时间没有大篇幅讨论企业软件开发这个话题了。这其实挺奇怪的。要知道&#xff0c;按类别来分&#xff0c;国内从事企业软件开发的技术人员是最多的&#xff0c;从CSDN和《程序员》联合举…

AES算法

算法简介 AES本质是一种对称分组密码体制&#xff0c;采用代替/置换网络。每轮由三层组成&#xff1a;线性混合层确保多轮之上的高度扩散&#xff0c;非线性层由16个S盒并置起到混淆的作用&#xff0c;秘钥加密层将子秘钥异或到中间状态。 AES加密数据块和秘钥长度可以是128比…

IDA使用方法-----1

0x01 启动IDA new&#xff1a;反汇编一个新文件go&#xff1a;运行&#xff0c;直接进入IDAPrevious&#xff1a;载入一个我们以前编译过的程序 如果不想每次都看到这个对话框&#xff0c;可以取消该对话框底部的Display at startup&#xff08;启动时显示&#xff09;&#x…

objdump命令详解

objdump命令是用查看目标文件或者可执行的目标文件的构成的gcc工具。 选项 --archive-headers -a 显示档案库的成员信息,类似ls -l将lib*.a的信息列出。 -b bfdname --targetbfdname 指定目标码格式。这不是必须的&#xff0c;objdump能自动识别许多格式&#xff0c;比如…

《Pro ASP.NET MVC 3 Framework》学习笔记之四【领域模型介绍】

主题&#xff1a;应用领域驱动开发(Applying Domain-Driven Development) Domain Model是MVC程序的"心脏"&#xff0c;其他的一切&#xff0c;包括Controllers和Views仅仅是用来跟Domain Model交互的一种方式&#xff0c;ASP.NET MVC并没有限制使用在Domain Model上面…

一步一步学pwntools(适合新手)

序 pwntools是一个二进制利用框架。官方文档提供了详细的api规范。然而目前并没有一个很好的新手教程。因此我用了我过去的几篇writeup。由于本文只是用来介绍pwntools使用方法&#xff0c;我不会过于详细的讲解各种二进制漏洞攻击技术。 Pwntools的“Hello World” 栈溢出无…

标志寄存器:CF、PF、AF、ZF、SF、TF、DF、OF

注&#xff1a;下面说到的标志寄存器都是缩写&#xff0c;C就是CF&#xff0c;其他也一样 标志寄存器&#xff1a;C、P、A、Z、S、T、D、O的内容只会是0或1&#xff0c;0表示假&#xff0c;1表示真 O&#xff1a;溢出标志 一个寄存器如果存放的值超过所能表示的范围&#xf…

Firefox2狂占CPU解决办法

https://images.cnblogs.com/cnblogs_com/Tisty/138006/o_firefox3.jpg 看了一下&#xff0c;不知道 "jpeg_free_large" 是干啥的&#xff0c;遂用 "Firefox jpeg_free_large" Google 一下&#xff0c;出来的一堆东西里有帖子说可能和 Apple 的 QuickTime …