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


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自动适应范围的分页代码
Aug 05 PHP
IIS6+PHP5+MySQL5+Zend Optimizer+phpMyAdmin安装配置图文教程 2009年
Jun 08 PHP
php 获取页面中指定内容的实现类
Jan 23 PHP
ThinkPHP视图查询详解
Jun 30 PHP
PHP使用GIFEncoder类处理gif图片实例
Jul 01 PHP
php中smarty模板条件判断用法实例
Jun 11 PHP
PHP实现带重试功能的curl连接示例
Jul 28 PHP
php指定长度分割字符串str_split函数用法示例
Jan 30 PHP
PHP获取当前日期及本周一是几月几号的方法
Mar 28 PHP
PHP绕过open_basedir限制操作文件的方法
Jun 10 PHP
总结PHP代码规范、流程规范、git规范
Jun 18 PHP
让whoops帮我们告别ThinkPHP6的异常页面
Mar 02 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下编码转换函数mb_convert_encoding与iconv的使用说明
2009/12/16 PHP
PHP插入排序实现代码
2013/04/04 PHP
php函数重载的替代方法--伪重载详解
2015/05/08 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
2015/12/22 PHP
PHP使用GD库输出汉字的方法【测试可用】
2016/11/10 PHP
Yii2实现中国省市区三级联动实例
2017/02/08 PHP
Yii框架应用组件用法实例分析
2020/05/15 PHP
javaScript - 如何引入js代码
2021/03/09 Javascript
JQuery textlimit 显示用户输入的字符数 限制用户输入的字符数
2009/05/14 Javascript
jQueryUI的Dialog的简单封装
2010/06/07 Javascript
解析Javascript中大括号“{}”的多义性
2013/12/02 Javascript
javascript中hasOwnProperty() 方法使用指南
2015/03/09 Javascript
JavaScript必知必会(九)function 说起 闭包问题
2016/06/08 Javascript
JavaScript实现的微信二维码图片生成器的示例
2016/10/26 Javascript
jQuery插件HighCharts实现2D柱状图、折线图的组合多轴图效果示例【附demo源码下载】
2017/03/09 Javascript
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
2017/09/06 NodeJs
JS实现根据详细地址获取经纬度功能示例
2019/04/16 Javascript
vue-cli配置全局sass、less变量的方法
2019/06/06 Javascript
jQuery实现回到顶部效果
2020/10/19 jQuery
让python的Cookie.py模块支持冒号做key的方法
2010/12/28 Python
浅析python中SQLAlchemy排序的一个坑
2017/02/24 Python
Python模糊查询本地文件夹去除文件后缀的实例(7行代码)
2017/11/09 Python
对python打乱数据集中X,y标签对的方法详解
2018/12/14 Python
Dlib+OpenCV深度学习人脸识别的方法示例
2019/05/14 Python
Django使用中间键实现csrf认证详解
2019/07/22 Python
Python Django 添加首页尾页上一页下一页代码实例
2019/08/21 Python
Python 整行读取文本方法并去掉readlines换行\n操作
2020/09/03 Python
Pytorch1.5.1版本安装的方法步骤
2020/12/31 Python
使用CSS3的rem属性制作响应式页面布局的要点解析
2016/05/24 HTML / CSS
大学生实习思想汇报
2014/01/12 职场文书
争论的故事教学反思
2014/02/06 职场文书
专业技术职务聘任书
2014/03/29 职场文书
职务说明书范文
2014/05/07 职场文书
大学生就业自荐书
2014/06/16 职场文书
自我评价优缺点范文
2015/03/11 职场文书
三好学生竞选稿
2015/11/21 职场文书