遍历FTP下目录和文件生成数据库--可以做小规模的FTP搜索引擎

原创 2002年09月02日 09:05:00

<?
//ftp信息
$ftp_server="xxxxxxxxxxx";   //FTP服务器的地址
$username="xxx";                           //要查询目录
$userpassword="xxxxxx";               //相映的密码
//数据库信息
$localhost="localhost";                    //一般是localhost
$datauser="xxx";                            //数据库用户名
$datapassword="xxxxx";                 //数据库用户密码
$database="xxxxx";                        //数据库名称

 

//数据表建立信息 realfly是表名
// CREATE TABLE realfly (
//   name text NOT NULL,
//   id tinyint(4) unsigned NOT NULL auto_increment,
//   date date DEFAULT '0000-00-00' NOT NULL,
//   time time DEFAULT '00:00:00' NOT NULL,
//   content longtext NOT NULL,
//   KEY id (id)
// );

?>

<?
###################################################
#程序:              FTP搜索引擎递归函数文件                    #
#文件:              class.php                                                #
#姓名:              网络骑士                                               #
#所用技术:           php&mysql                                           #
#版本:              v1.0                                                      #
#联系:              shakespareshmily@sina.com.cn               #
###################################################

function happy($ftp_stream,$directory,$link)

{

 if(is_dir($directory))

 {

  //$today=(date("Y")."-".date("m")."-".date("d"));

  //$content=$directory;

  //$time=date("H:i:s");

  //$query="INSERT INTO realfly VALUES ('', '', '$today', '$time', '$content');";

  //mysql_query($query,$link);

  //$color="FF3399";

  //echo  "<font color=".$color."size=2>".$directory."</font><br>";

  $result=ftp_nlist($ftp_stream,$directory);

  for ($j=0;$j<=count($result);$j++){

 

                                       happy($ftp_stream,$result[$j],$link);

                                    }

 }

 else {

  $basename=basename($directory);
  $file=explode(".",$basename);

  $id=$i++;

  $today=(date("Y")."-".date("m")."-".date("d"));


  $content=$directory;

  //$content4=$directory;

  $time=date("H:i:s");

  $query="INSERT INTO realfly VALUES ('$file[0]', '$id', '$today', '$time', '$content');";

  mysql_query($query,$link);

 echo $directory."<br>";
 }

}

?>

<?
  include ("./search_ini.php");
  include ("./class.php");
###################################################
#程序:              FTP搜索引擎主文件                               #
#文件:              search.php                                              #
#姓名:              网络骑士                                               #
#所用技术:           php&mysql                                            #
#版本:              v1.0                                                       #
#联系:              shakespareshmily@sina.com.cn                #
###################################################

$ftp_stream=ftp_connect($ftp_server,21);
$login=ftp_login($ftp_stream,"$username","$userpassword");
if(!$login||!$ftp_stream){
                         echo "cannot connect to $ftp_server";
                         echo "try again";
                         }
else
                         {
                         echo "<font color=".$color." size=+3 >connect to $ftp_server<br>CONGRATULATIONS!</font><br>";
                         }
                         $link=mysql_pconnect("$localhost","$datauser","$datapassword");
                         mysql_select_db("$database",$link);
$this=ftp_pwd($ftp_stream);
$this=@ftp_chdir($ftp_stream,"");

$result=ftp_nlist($ftp_stream,$this);
for ($i=0;$i<=count($result);$i++)
{
if (is_dir($result[$i]))
 {
 happy($ftp_stream,$result[$i],$link);
 }
 else {echo $result[$i]."<br>";
  $basename=basename($result[$i]);
  $file=explode(".",$basename);
  $id=$i;
  $today=(date("Y")."-".date("m")."-".date("d"));
  $content="$result[$i]";
  $time=date("H:i:s");
  $query="INSERT INTO realfly VALUES ( '$file[0]', '$id', '$today', '$time', '$content');";
  mysql_query($query,$link);
  }
}
?>

以上是后台的搜索处理程序,下面是用户查询处理程序

<?

###########################################

#软件名:     FTP搜索引擎显示页面                   #

#版本:       v1.0                                                #

#所用技术:   php&mysql                                   #

#作者:       网络骑士                                        #

#联系方式:   shakespareshmily@sina.com.cn      #

###########################################

include ("./search_ini.php");

//connect to database

$link=mysql_pconnect("$localhost","$datauser","$datapassword") or die ("无法连接服务器,请稍后再试!");

//select database

mysql_select_db("$database",$link);

//make query

$query="select name,content from realfly where name='$query1' ";
echo "您所查询的字段:        "; echo "$query1.<BR>";
$i=0;
$result=mysql_query($query,$link);
if($result)
{while(list($name,$content)=mysql_fetch_row($result))
  { echo "您所能查询到的结果:     ";
    $content3="ftp://xxxxxxxx";                  //你的FTP站点名称
    $content2=stristr($directory,"/var/ftp");
    $content=$content3.$content2;
    echo "<a href=$content.>$content</a><BR>";
    $i++;
  }   }

 if($i==0)
                    {   $color="FF3399";
   echo  "<font color=".$color."  size=2>真是太神奇了,居然没有找到,呵呵~~,再试试!</font><br>";}
 else echo "恭喜,您要查找的东东找到了,赶快下载吧!.<br>";
    ?>

需要说明的几点:

1:产生背景:由于我们站长让我做一个类似北大天网那样的FTP搜索的东西,以方便校内想下载软件而又一时半会儿找不到相映目录的网友,所以它就产生了。当然它的搜索能力远不如天网强大,而且它也不是真正意义上的搜索引擎,但是却可以完成FTP目录下遍历的功能(如果你的目录不是太深-----它可以处理到18层目录)

2:以上程序必须放在你所要搜索的目录下面才可以用----原因是权限问题

3:存在的问题

 a:如果处理的文件目录太深(比如30层,虽然很少人这么做,但是它处理起来就会跳过太深的目录----原因是服务器关于命令运行时间的限制)-------偶已经想到了解决的方法(理论阶段,由于现在忙于应付CPA的考试,所以没有实施)------即模仿flashget等的多线程下载的方式。得到当前目录下的文件,文件夹同时生成数组对每个文件夹逐个进行搜索或者同时进行搜索

b:有时候会出现这种情况,即:父目录的名字和子目录的相同,这时候会跳过这个父目录-----这个问题容易解决但是会加大处理的任务,加之最近没有时间改进,所以一直放置着^-^

浅妄薄见,望与斟酌

java通过ftp上传、下载文件,遍历文件目录

import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; ...
  • huikaichedeyeren
  • huikaichedeyeren
  • 2015年03月12日 15:12
  • 1811

Win32非递归遍历和搜索文件以及目录算法

非递归遍历搜索的算法核心在于自己用一个堆栈代替函数调用过程中系统建立起来的堆栈。这个搜索算法有以下几个要点: 搜索的顶层目录在进入循环之前进栈 栈元素存储字符串指针,出栈时释放资源 每次循环开始,栈顶...
  • caoshiying
  • caoshiying
  • 2016年08月15日 13:02
  • 1163

libcurl 下载ftp服务器全部文件

原:http://blog.csdn.net/mp295345033/article/details/49487347 最近做的一个任务,项目的需求,需要下载ftp上的全部文件,没有上传,只有下载...
  • qq_16209077
  • qq_16209077
  • 2016年07月20日 23:27
  • 16761

遍历FTP上的文件夹生成目录树

  • 2013年08月29日 14:10
  • 863B
  • 下载

Serv-U FTP Jail Break(越权遍历目录、下载任意文件)

[*]----------------------------------------------------[*] Serv-U FTP Server Jail Break 0day Disco...
  • god_7z1
  • god_7z1
  • 2011年12月06日 09:37
  • 331

java通过ftp上传、下载文件,遍历文件目录

import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io....
  • smszhuang168
  • smszhuang168
  • 2012年09月07日 00:26
  • 2953

java通过ftp上传、下载文件,遍历文件目录

java通过ftp上传、下载文件,遍历文件目录  收藏 星辰~   发表于 5年前 阅读 7703 收藏 9 点赞 2 评论 0 im...
  • gaoqiao1988
  • gaoqiao1988
  • 2016年10月24日 10:52
  • 268

VS2010对话框,FTP遍历目录显示在对话框中,选择列表项下载文件或者目录主程序代码

新手入门,借鉴了很多地方写的
  • aspirine0421
  • aspirine0421
  • 2017年03月07日 14:46
  • 251

使用CFtpFileFind和递归算法来遍历ftp目录

  • 2004年07月20日 00:00
  • 27KB
  • 下载

FTP遍历下载目录

  • 2006年02月23日 09:05
  • 39KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:遍历FTP下目录和文件生成数据库--可以做小规模的FTP搜索引擎
举报原因:
原因补充:

(最多只允许输入30个字)