一个用于网络的工具函数库


Posted in PHP onOctober 09, 2006

<?PHP

/*
PHP Net Toolpack v0.1 08.05.2000,
by waddler(@netlife.fi)
phpnettoolpack.sourceforge.net
To be distributed under GNU GPL
*/

// whois(hostname [,username, [port]])
Function whois ($a_server, $a_query="", $a_port=43) {
$sock = fsockopen($a_server, $a_port, &$errno, &$errstr, 10);
if (!$sock)
{
echo "$errstr ($errno)<BR>n";
} else {
fputs($sock, "$a_queryrn");
while(!feof($sock))
{
$buf = fgets($sock,128);
if (ereg( "Whois Server:", $buf))
{
$a_server = str_replace( "Whois Server: ", "", $buf);
$a_server = trim($a_server);
}
}
fclose($sock);

if ($a_server)
{
print "<B>$a_query is registered at $a_server:</B><BR>";
$sock = fsockopen($a_server, 43, &$errno, &$errstr, 10);
if(!$sock)
{
echo "Could not open connection to $a_server on port $a_port.n";
echo "$errstr ($errno)<BR>n";
} else {
fputs($sock, "$a_queryrn");
while(!feof($sock))
{
echo fgets($sock,128);
}
fclose($sock);
}
} else {
echo "<b>$a_query was not found.</b><BR>";
}
}
}

// finger(hostname [,username, [port]])
Function finger ($a_server, $a_query="", $a_port=79) {
$sock=fsockopen($a_server,$a_port, &$errno, &$errstr, 10);
if (!$sock)
{
$ret_str = "$errstr ($errno)<BR>n";
} else {
fputs($sock,"$a_queryn");
while (!feof($sock)) { $ret_str .= fgets($sock,128); }
fclose($sock);
}
echo $ret_str;
return $ret_str;
}

// traceroute(hostname)
Function traceroute ($a_query) {
exec("traceroute $a_query",$ret_strs);
$str_count = count($ret_strs);
for ($count=0; $count < $str_count; $count++)
print "$count/$str_count".$ret_strs[$count]."n";
}

// -----------------------------------------------------------

$app_name = "PHP Net Toolpack";
$app_version = "0.1";

$TOOLS = array(
"finger" => "Finger",
"traceroute" => "Traceroute",
"whois" => "Whois?"
);

// when included inside <select name="tool"> on a html file ..
if ($tool=="listtools")
{
while (list($key, $val) = each($TOOLS)) {
print " <OPTION VALUE="".$key."">".$val."</OPTION>n";
}
exit;
}

// print appropriate html header
print "<HTML>";
if ($tool)
{
print "<HEAD><TITLE>".$tool." for ".$query."</TITLE></HEAD>n";
print "<BODY>n<H3>".$tool." for ".$query." ..</H3>n";
} else {
print "<HEAD><TITLE>".$app_name."</TITLE></HEAD>n";
print "<BODY>n<H3>".$app_name."</H3>n";
}

// check what tool they want to use and do what is necessary
switch($tool) {
case "finger":
if ($query)
{
print "<PRE>n";
finger($server, $query);
print "</PRE>";
} else {
?>

<FORM ACTION="<?PHP echo($PHP_SELF. "?tool=".$tool); ?>" METHOD="post">
Server : <INPUT TYPE="text" NAME="server" VALUE="localhost"> <BR>
Query : <INPUT TYPE="text" NAME="query" SIZE="40" MAXLENGTH="100"> <BR>
<INPUT TYPE="submit" VALUE="Finger">
</FORM>

<?PHP
}
break;

case "traceroute":
if ($query)
{
print "<PRE>n";
traceroute($query);
print "</PRE>";
} else {
?>

<FORM ACTION="<?PHP echo($PHP_SELF. "?tool=".$tool); ?>" METHOD="post">
Query : <INPUT TYPE="text" NAME="query" SIZE="40" MAXLENGTH="100"> <BR>
<INPUT TYPE="submit" VALUE="Trace route">
</FORM>

<?PHP
}
break;

case "whois":
if ($query)
{
print "<PRE>n";
whois($server,$query);
print "</PRE>";
} else {
?>  

<!-- <UL>
To look up a NIC handle, host name, or registrant,
use one of the keywords below:<BR>
<LI>To search by NIC handle (or contact), type "handle WA3509"</LI><BR>
<LI>To search by name, type "name lastname, firstname" </LI><BR>
<LI>To search by company name, type "name The Sample Corporation" </LI><BR>
<LI>To search by domain name, type "example.com" </LI><BR>
<LI>To search by IP address, type "host 121.23.2.7" </LI><BR>
<LI>To search by host or nameserver name, type "host ns1.worldnic.com" </LI><BR>
(examples are from networksolutions.com)
</UL> -->

<FORM ACTION="<?PHP echo($PHP_SELF. "?tool=".$tool); ?>" METHOD="post">
This will find .com, .org, and .net domains<BR>
Server : <INPUT TYPE="text" NAME="server" VALUE="rs.internic.net"> <BR>
Query : <INPUT TYPE="text" NAME="query" SIZE="40" MAXLENGTH="100"> <BR>
<INPUT TYPE="submit" VALUE="<?PHP echo $TOOLS[$tool]; ?>">
</FORM>

<?PHP
}
break;

default:
print "<UL>Currently supported tools are:n";
while (list($key, $val) = each($TOOLS)) {
echo "<LI><A HREF="".$PHP_SELF."?tool=".$key."">".$val."</A></LI>n";
}
print "</UL>n";
break;
}

print "n<HR><SMALL>".$app_name." v".$app_version."</SMALL>n";
print "<BODY>n</HTML>";

?> 

PHP 相关文章推荐
一个简易需要注册的留言版程序
Oct 09 PHP
基于PHP生成静态页的实现方法
May 10 PHP
深入解析PHP内存管理之谁动了我的内存
Jun 20 PHP
去除php注释和去除空格函数分享
Mar 13 PHP
PHP获取浏览器信息类和客户端地理位置的2个方法
Apr 24 PHP
thinkphp实现面包屑导航(当前位置)例子分享
May 10 PHP
PHP中shuffle数组值随便排序函数用法
Nov 21 PHP
php遍历删除整个目录及文件的方法
Mar 13 PHP
php将数组转换成csv格式文件输出的方法
Mar 14 PHP
php动态生成版权所有信息的方法
Mar 24 PHP
PHP中使用hidef扩展代替define提高性能
Apr 09 PHP
composer.lock文件的作用
Feb 03 PHP
oracle资料库函式库
Oct 09 #PHP
针对初学PHP者的疑难问答(2)
Oct 09 #PHP
模仿OSO的论坛(三)
Oct 09 #PHP
在PHP3中实现SESSION的功能(一)
Oct 09 #PHP
我用php+mysql写的留言本
Oct 09 #PHP
在PHP3中实现SESSION的功能(三)
Oct 09 #PHP
在PHP3中实现SESSION的功能(二)
Oct 09 #PHP
You might like
Apache+php+mysql在windows下的安装与配置图解(最新版)
2008/11/30 PHP
php 字符串函数收集
2010/03/29 PHP
php whois查询API制作方法
2011/06/23 PHP
PHP实现异步调用方法研究与分享
2011/10/27 PHP
php匹配字符中链接地址的方法
2014/12/22 PHP
windows下安装php的memcache模块的方法
2015/04/07 PHP
php如何获取文件的扩展名
2015/10/28 PHP
详解php用static方法的原因
2018/09/12 PHP
PHP设计模式(九)外观模式Facade实例详解【结构型】
2020/05/02 PHP
jQuery 操作option的实现代码
2011/03/03 Javascript
js中各浏览器中鼠标按键值的差异
2011/04/07 Javascript
JS window对象的top、parent、opener含义介绍
2013/12/03 Javascript
JavaScript调用ajax获取文本文件内容实现代码
2014/03/28 Javascript
JavaScript中的Math.atan2()方法使用详解
2015/06/15 Javascript
JQUERY实现网页右下角固定位置展开关闭特效的方法
2015/07/27 Javascript
浅析jquery数组删除指定元素的方法:grep()
2016/05/19 Javascript
js实现交通灯效果
2017/01/13 Javascript
Vue.js实现简单动态数据处理
2017/02/13 Javascript
基于JS实现父组件的请求服务过程解析
2019/10/14 Javascript
JS操作Fckeditor的一些常用方法(获取、插入等)
2020/02/19 Javascript
vue+elementUI 实现内容区域高度自适应的示例
2020/09/26 Javascript
[01:14]英雄,所敬略同——2018完美盛典宣传视频4K
2018/12/05 DOTA
Python用list或dict字段模式读取文件的方法
2017/01/10 Python
Python的爬虫框架scrapy用21行代码写一个爬虫
2017/04/24 Python
python批量修改文件编码格式的方法
2018/05/31 Python
Python实现的简单读写csv文件操作示例
2018/07/12 Python
Python for循环中的陷阱详解
2018/07/13 Python
python 为什么说eval要慎用
2019/03/26 Python
Python return语句如何实现结果返回调用
2020/10/15 Python
Python爬虫制作翻译程序的示例代码
2021/02/22 Python
英国领先的在线高尔夫设备零售商:Golfgeardirect
2020/12/11 全球购物
Tomcat的缺省是多少,怎么修改
2014/04/09 面试题
电脑教师的教学自我评价
2013/11/26 职场文书
四个太阳教学反思
2014/02/01 职场文书
五星级酒店前台接待岗位职责
2015/04/02 职场文书
Java处理延时任务的常用几种解决方案
2022/06/01 Java/Android