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


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中使用XML
Oct 09 PHP
php adodb操作mysql数据库
Mar 19 PHP
PHP sprintf() 函数的应用(定义和用法)
Jun 29 PHP
PHP 常用数组内部函数(Array Functions)介绍
Jun 05 PHP
用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤
Jan 19 PHP
浅析PHP中strlen和mb_strlen的区别
Aug 31 PHP
php递归遍历删除文件的方法
Apr 17 PHP
使用PHP生成二维码的方法汇总
Jul 22 PHP
php根据用户名和手机号查询是否存在手机号码
Feb 16 PHP
php处理静态页面:页面设置缓存时间实例
Jun 22 PHP
Thinkphp自定义生成缩略图尺寸的方法
Aug 05 PHP
tp5框架无刷新分页实现方法分析
Sep 26 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运行时强制显示出错信息的代码
2011/04/20 PHP
php中rename函数用法分析
2014/11/15 PHP
php + ajax 实现的写入数据库操作简单示例
2020/05/16 PHP
javascript function、指针及内置对象
2009/02/19 Javascript
javascript自动改变文字大小和颜色的效果的小例子
2013/08/02 Javascript
js 为label标签和div标签赋值的方法
2013/08/08 Javascript
js获取当前时间显示在页面上并每秒刷新
2014/12/24 Javascript
jQuery解析json数据实例分析
2015/11/24 Javascript
js常用DOM方法详解
2017/02/04 Javascript
vue的Virtual Dom实现snabbdom解密
2017/05/03 Javascript
用vue的双向绑定简单实现一个todo-list的示例代码
2017/08/03 Javascript
BootStrap入门学习第一篇
2017/08/28 Javascript
基于对象合并功能的实现示例
2017/10/10 Javascript
v-slot和slot、slot-scope之间相互替换实例
2020/09/04 Javascript
[59:44]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 paiN vs iG
2018/03/31 DOTA
python有证书的加密解密实现方法
2014/11/19 Python
Python基础教程之内置函数locals()和globals()用法分析
2018/03/16 Python
Python单元测试实例详解
2018/05/25 Python
PyTorch CNN实战之MNIST手写数字识别示例
2018/05/29 Python
深入理解python中sort()与sorted()的区别
2018/08/29 Python
python基于SMTP协议发送邮件
2019/05/31 Python
Python基于模块Paramiko实现SSHv2协议
2020/04/28 Python
Numpy(Pandas)删除全为零的列的方法
2020/09/11 Python
pip/anaconda修改镜像源,加快python模块安装速度的操作
2021/03/04 Python
日本乐天官方海外转运服务:Rakuten Global Express
2018/11/30 全球购物
世界经理人咨询有限公司面试
2014/09/23 面试题
如何用Java判断一个文件或目录是否存在
2012/11/19 面试题
银行见习期自我鉴定
2014/01/29 职场文书
社区母亲节活动方案
2014/03/05 职场文书
优秀毕业生找工作自荐信
2014/06/23 职场文书
房屋鉴定委托书范本
2014/09/23 职场文书
党员自我剖析材料范文
2014/10/06 职场文书
护理专业自我评价
2015/03/11 职场文书
公司清洁工岗位职责
2015/04/15 职场文书
同学聚会感言一句话
2015/07/30 职场文书
Nginx代理同域名前后端分离项目的完整步骤
2021/03/31 Servers