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


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 相关文章推荐
分页显示Oracle数据库记录的类之二
Oct 09 PHP
分享PHP入门的学习方法
Jan 02 PHP
php xml实例 留言本
Mar 20 PHP
php中使用addslashes函数报错问题的解决方法
Feb 06 PHP
php生成excel列序号代码实例
Dec 24 PHP
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
May 04 PHP
求帮忙修改个php curl模拟post请求内容后并下载文件的解决思路
Sep 20 PHP
PHP中常见的缓存技术实例分析
Sep 23 PHP
php微信公众号开发之关键词回复
Oct 20 PHP
微信公众平台开发教程④ ThinkPHP框架下微信支付功能图文详解
Apr 10 PHP
laravel 验证错误信息到 blade模板的方法
Sep 29 PHP
php解决约瑟夫环算法实例分析
Sep 30 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
PHP 高手之路(三)
2006/10/09 PHP
你应该知道PHP浮点数知识
2015/05/13 PHP
Yii2针对指定url的生成及图片等的引入方法小结
2016/07/18 PHP
PHP实现压缩图片尺寸并转为jpg格式的方法示例
2018/05/10 PHP
JavaScript XML操作 封装类
2009/07/01 Javascript
MC Dialog js弹出层 完美兼容多浏览器(5.6更新)
2010/05/06 Javascript
提高jQuery性能的十个诀窍
2013/11/14 Javascript
JQuery表格拖动调整列宽效果(自己动手写的)
2014/09/01 Javascript
JavaScript实现网页加载进度条代码超简单
2015/09/21 Javascript
非常棒的jQuery图片轮播效果
2016/04/17 Javascript
JavaScript知识点总结(十一)之js中的Object类详解
2016/05/31 Javascript
详解JavaScript中js对象与JSON格式字符串的相互转换
2017/02/14 Javascript
jQuery实现定时隐藏对话框的方法分析
2018/02/12 jQuery
解决layui下拉框监听问题(监听不到值的变化)
2019/09/28 Javascript
微信小程序基于高德地图查找位置并显示文字
2019/10/30 Javascript
JS数组扁平化、去重、排序操作实例详解
2020/02/24 Javascript
vue cli3适配所有端方案的实现
2020/04/13 Javascript
webstorm建立vue-cli脚手架的傻瓜式教程
2020/09/22 Javascript
[02:02:38]VG vs Mineski Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
python 循环遍历字典元素的简单方法
2016/09/11 Python
Python 使用folium绘制leaflet地图的实现方法
2019/07/05 Python
Python使用百度api做人脸对比的方法
2019/08/28 Python
Python Handler处理器和自定义Opener原理详解
2020/03/05 Python
Python函数必须先定义,后调用说明(函数调用函数例外)
2020/06/02 Python
python中添加模块导入路径的方法
2021/02/03 Python
CLR与IL分别是什么含义
2016/08/23 面试题
UNIX文件系统常用命令
2012/05/25 面试题
英文求职信结束语大全
2013/10/26 职场文书
优秀团员自我评价范文
2014/04/23 职场文书
中华魂演讲稿
2014/05/13 职场文书
爱心捐助活动总结
2015/05/09 职场文书
单身证明格式样本
2015/06/15 职场文书
运动员加油词
2015/07/18 职场文书
详解MySQL数据库千万级数据查询和存储
2021/05/18 MySQL
Python OpenCV形态学运算示例详解
2022/04/07 Python
Java死锁的排查
2022/05/11 Java/Android