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


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 相关文章推荐
php 方便水印和缩略图的图形类
May 21 PHP
php下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
Dec 29 PHP
供参考的 php 学习提高路线分享
Oct 23 PHP
php判断上传的Excel文件中是否有图片及PHPExcel库认识
Jan 11 PHP
kohana框架上传文件验证规则写法示例
Jul 14 PHP
五款PHP代码重构工具推荐
Oct 14 PHP
php动态变量定义及使用
Jun 10 PHP
php把数组值转换成键的方法
Jul 13 PHP
php验证码实现代码(3种)
Sep 07 PHP
yii插入数据库防并发的简单代码
May 27 PHP
php实现支持中文的文件下载功能示例
Aug 30 PHP
如何利用PHP实现上传图片功能详解
Sep 24 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
如何跨站抓取别的站点的页面的补充
2006/10/09 PHP
php常用字符串String函数实例总结【转换,替换,计算,截取,加密】
2016/12/07 PHP
PHP使用标准库spl实现的观察者模式示例
2018/08/04 PHP
JS 页面自动加载函数(兼容多浏览器)
2009/05/18 Javascript
合并table相同单元格的jquery插件分享(很精简)
2011/06/20 Javascript
jQuery之选择组件的深入解析
2013/06/19 Javascript
JavaScript和CSS通过expression实现Table居中显示
2013/06/28 Javascript
jQuery.holdReady()使用方法
2014/05/20 Javascript
js读取csv文件并使用json显示出来
2015/01/09 Javascript
JS+CSS实现鼠标滑过时动态翻滚的导航条效果
2015/09/24 Javascript
js实现图片轮播效果
2015/12/19 Javascript
微信小程序 页面传参实例详解
2016/11/16 Javascript
ES6实现的遍历目录函数示例
2017/04/07 Javascript
关于vue.js v-bind 的一些理解和思考
2017/06/06 Javascript
Vue-cli创建项目从单页面到多页面的方法
2017/09/20 Javascript
node 命令方式启动修改端口的方法
2018/05/12 Javascript
基于layui的table插件进行复选框联动功能的实现方法
2019/09/19 Javascript
基于JavaScript或jQuery实现网站夜间/高亮模式
2020/05/30 jQuery
axios解决高并发的方法:axios.all()与axios.spread()的操作
2020/11/09 Javascript
原生js实现自定义消息提示框
2020/11/19 Javascript
使用Python脚本对Linux服务器进行监控的教程
2015/04/02 Python
简单介绍Python中利用生成器实现的并发编程
2015/05/04 Python
详解python 发送邮件实例代码
2016/12/22 Python
使用python实现tcp自动重连
2017/07/02 Python
Python进度条实时显示处理进度的示例代码
2018/01/30 Python
windows安装TensorFlow和Keras遇到的问题及其解决方法
2019/07/10 Python
详解python中*号的用法
2019/10/21 Python
Python有参函数使用代码实例
2020/01/06 Python
python GUI库图形界面开发之PyQt5动态加载QSS样式文件
2020/02/25 Python
Python列表嵌套常见坑点及解决方案
2020/09/30 Python
Volcom法国官网:美国冲浪滑板品牌
2017/05/25 全球购物
会计学应届毕业生推荐信
2013/11/04 职场文书
给海归自荐信的建议
2013/12/13 职场文书
乐观大学生的自我评价
2014/01/10 职场文书
2014年旅游局法制宣传日活动总结
2014/11/01 职场文书
2014年乡镇工会工作总结
2014/12/02 职场文书