设为首页收藏本站language 语言切换
查看: 1262|回复: 0
收起左侧

PHP实现的WEB方式的FTP客户端程序

[复制链接]
发表于 2010-2-24 13:36:24 | 显示全部楼层 |阅读模式
<br>                   此程序需要FTP函数支持。 <BR>原文件 http://inebria.com/phpftp/ftp.phps <BR>请注意为了节省篇幅,这里省略了作者的版权声明 <BR><BR>ftp.php3 <BR><BR>&lt;?php  <BR><BR>function phpftp_top() { <BR>    echo  "&lt;!-- function phpftp_top --&gt; "; <BR>    echo  "&lt;html&gt; "; <BR>    echo  "&lt;head&gt; "; <BR>    echo  "&lt;title&gtHP FTP Client v1.4&lt;/title&gt; "; <BR>    echo  "&lt;/head&gt; "; <BR>    echo  "&lt;body bgcolor="#ffffff"&gt; "; <BR>    echo  "&lt;font face="courier"&gt; "; <BR>} <BR><BR>function phpftp_bottom() { <BR>    echo  " &lt;!-- function phpftp_bottom --&gt; "; <BR>    echo  "&lt;/font&gt; "; <BR>    echo  "&lt;/body&gt; "; <BR>    echo  "&lt;/html&gt; "; <BR>} <BR><BR>function phpftp_login() { <BR>    phpftp_top(); <BR>    echo  "&lt;!-- function phpftp_login --&gt; "; <BR>    echo  "&lt;p&gt; "; <BR>    echo  "&lt;form action="ftp.php3" method=post&gt; "; <BR>    echo  "Login:     "; <BR>    echo  "&lt;input name="phpftp_user" type="text"&gt; "; <BR>    echo  "&lt;p&gt; "; <BR>    echo  "assword:  "; <BR>    echo  "&lt;input name="phpftp_passwd" type="password"&gt; "; <BR>    echo  "&lt;p&gt; "; <BR>    echo  "Directory: "; <BR>    echo  "&lt;input name="phpftp_dir" type="text"&gt; "; <BR>    echo  "&lt;p&gt; "; <BR>    echo  "&lt;input type="hidden" name="function" value="dir"&gt; "; <BR>    echo  "&lt;input type="submit" value="connect"&gt; "; <BR>    echo  "&lt;/form&gt; "; <BR>    echo  "&lt;p&gt; "; <BR>    phpftp_bottom(); <BR>} <BR><BR>/* This function does not return TRUE/FALSE - it returns the value of <BR>   $ftp, the current FTP stream. */  <BR><BR>function phpftp_connect( $phpftp_user, $phpftp_passwd ) { <BR>    $phpftp_host= "localhost"; <BR>    $ftp = ftp_connect( $phpftp_host ); <BR>    if ( $ftp ) { <BR>        if ( ftp_login( $ftp, $phpftp_user, $phpftp_passwd ) ) { <BR>            return $ftp; <BR>        } <BR>    } <BR>} <BR><BR>function phpftp_list( $phpftp_user, $phpftp_passwd, $phpftp_dir ) { <BR>    phpftp_top(); <BR>    echo  "&lt;!-- function phpftp_list --&gt; "; <BR>    $ftp = @phpftp_connect( $phpftp_user, $phpftp_passwd ); <BR>    if ( ! $ftp  ) { <BR>        echo  "&lt;strong&gt;FTP login failed!&lt;/strong&gt; "; <BR>        echo  "&lt;a href="ftp.php3"&gt;Start over?&lt;/a&gt; "; <BR>        phpftp_bottom(); <BR>    } else { <BR>        if ( ! $phpftp_dir ) { <BR>            $phpftp_dir=ftp_pwd( $ftp ); <BR>        } <BR>        if ( ! @ftp_chdir( $ftp, $phpftp_dir ) ) { <BR>            echo  "&lt;font color="#ff0000"&gt;&lt;strong&gt;Can't enter that directory!&lt;/strong&gt;&lt;/font&gt;&lt;p&gt;&lt;p&gt; "; <BR>            $phpftp_dir=ftp_pwd( $ftp ); <BR>        } <BR>        echo  "&lt;strong&gt;Current directory:&lt;/strong&gt; " . $phpftp_dir .  "&lt;br&gt; "; <BR>        if ( $phpftp_dir ==  "/" ) { <BR>            $phpftp_dir= ""; <BR>        } <BR>        echo  "&lt;table border=0 cellspacing=20&gt; "; <BR>        if ( $contents = ftp_nlist( $ftp,  "." ) ) { <BR>            $d_i=0; <BR>            $f_i=0; <BR>            sort($contents); <BR>            for ( $i=0; $i &lt; count( $contents ); $i++ ) { <BR>                $file_size = ftp_size( $ftp, $contents[$i] ); <BR>                if ( $file_size == -1 ) { <BR>                    $nlist_dirs[$d_i]=$contents[$i]; <BR>                    $d_i++; <BR>                } else { <BR>                    $nlist_files[$f_i]=$contents[$i]; <BR>                    $nlist_filesize[$f_i]=$file_size; <BR>                    $f_i++; <BR>                } <BR>            } <BR>            echo  "&lt;tr&gt;&lt;td&gt; "; <BR>            echo  "&lt;font face="courier"&gt;&lt;strong&gt;Directories&lt;/strong&gt;&lt;/font&gt;&lt;br&gt; "; <BR>            echo  "&lt;form action="ftp.php3" method=post&gt; "; <BR>            echo  "&lt;input type="hidden" name="function" value="cd"&gt; "; <BR>            echo  "&lt;input type="hidden" name="phpftp_user" value="" . $phpftp_user .  ""&gt; "; <BR>            echo  "&lt;input type="hidden" name="phpftp_passwd" value="" . $phpftp_passwd .  ""&gt; ";   <BR>            echo  "&lt;input type="hidden" name="phpftp_dir" value="" . $phpftp_dir .  ""&gt; "; <BR>            echo  "&lt;select name="select_directory" size="10" width="100"&gt; "; <BR>            for ( $i=0; $i &lt; count( $nlist_dirs ); $i++ ) { <BR>                echo  "&lt;option value="" . $nlist_dirs[$i] .  ""&gt;"  . $nlist_dirs[$i] .  "&lt;/option&gt; "; <BR>            } <BR>              echo  "&lt;/select&gt;&lt;br&gt; "; <BR>              echo  "&lt;input type="submit" value="Enter Directory"&gt; "; <BR>            echo  "&lt;/form&gt; "; <BR>            echo  "&lt;/td&gt;&lt;td&gt; "; <BR>            echo  "&lt;font face="courier"&gt;&lt;strong&gt;Files&lt;/strong&gt;&lt;/font&gt;&lt;br&gt; "; <BR>            echo  "&lt;form action="ftp.php3" method=post&gt; "; <BR>            echo  "&lt;input type="hidden" name="function" value="get"&gt; "; <BR>            echo  "&lt;input type="hidden" name="phpftp_user" value="" . $phpftp_user .  ""&gt; "; <BR>            echo  "&lt;input type="hidden" name="phpftp_passwd" value="" . $phpftp_passwd .  ""&gt; "; <BR>            echo  "&lt;input type="hidden" name="phpftp_dir" value="" . $phpftp_dir .  ""&gt; "; <BR>            echo  "&lt;select name="select_file" size="10"&gt; "; <BR>            for ( $i=0; $i &lt; count( $nlist_files ); $i++ ) { <BR>                echo  "&lt;option value="" . $nlist_files[$i] .  ""&gt;"  .  $nlist_files[$i] . "  ($nlist_filesize[$i] bytes)".  "&lt;/option&gt; "; <BR>            } <BR>            echo  "&lt;/select&gt;&lt;br&gt; "; <BR>            echo  "&lt;input type="submit" value="Download File"&gt; "; <BR>            echo  "&lt;/form&gt; "; <BR>            echo  "&lt;/td&gt;&lt;/tr&gt; "; <BR>        } else { <BR>            echo  "&lt;p&gt;&lt;font color="#ff0000"&gt;&lt;strong&gt;Directory empty or not readable&lt;/strong&gt;&lt;/font&gt;&lt;p&gt; "; <BR>        } <BR>        echo  "&lt;/table&gt; "; <BR>        echo  "&lt;p&gt; "; <BR>        echo  "&lt;form action="ftp.php3" method=post&gt; "; <BR>        $cdup=dirname( $phpftp_dir ); <BR>        if ( $cdup ==  "" ) { <BR>            $cdup= "/"; <BR>        } <BR>        echo  "&lt;input type="hidden" name="function" value="dir"&gt; "; <BR>        echo  "&lt;input type="hidden" name="phpftp_user" value="" . $phpftp_user .  ""&gt; "; <BR>        echo  "&lt;input type="hidden" name="phpftp_passwd" value="" . $phpftp_passwd .  ""&gt; "; <BR>        echo  "&lt;input type="hidden" name="phpftp_dir" value="" . $cdup .  ""&gt; "; <BR>        echo  "&lt;input type="submit" value="Go up one directory"&gt; "; <BR>        echo  "&lt;/form&gt; "; <BR>        echo  "&lt;p&gt; "; <BR>        echo  "&lt;form enctype="multipart/form-data" action="ftp.php3" method=post&gt; "; <BR>        echo  "&lt;input type="hidden" name="max_file_size" value="1000000"&gt; "; <BR>        echo  "&lt;input type="hidden" name="phpftp_user" value="" . $phpftp_user .  ""&gt; "; <BR>        echo  "&lt;input type="hidden" name="phpftp_passwd" value="" . $phpftp_passwd .  ""&gt; "; <BR>        echo  "&lt;input type="hidden" name="phpftp_dir" value="" . $phpftp_dir .  ""&gt; "; <BR>        echo  "&lt;input type="hidden" name="function" value="put"&gt; "; <BR>        echo  "&lt;input type="submit" value="Upload this:"&gt; "; <BR>        echo  "&lt;input name="userfile" type="file"&gt; "; <BR>        echo  "&lt;/form&gt; "; <BR>        echo  "&lt;p&gt; "; <BR>        echo  "&lt;form action="ftp.php3" method=post&gt; "; <BR>        echo  "&lt;input type="hidden" name="function" value="mkdir"&gt; "; <BR>        echo  "&lt;input type="hidden" name="phpftp_user" value="" . $phpftp_user .  ""&gt; "; <BR>        echo  "&lt;input type="hidden" name="phpftp_passwd" value="" . $phpftp_passwd .  ""&gt; "; <BR>        echo  "&lt;input type="hidden" name="phpftp_dir" value="" . $phpftp_dir .  ""&gt; ";  <BR>        echo  "&lt;input type="submit" value="Make subdirectory:"&gt; "; <BR>        echo  "&lt;input name="new_dir" type="text"&gt; "; <BR>        ftp_quit( $ftp ); <BR>        phpftp_bottom(); <BR>    } <BR>} <BR><BR>function phpftp_cd( $phpftp_user, $phpftp_passwd, $phpftp_dir, $select_directory ) { <BR>    echo  "&lt;!-- function phpftp_cd --&gt; "; <BR>    $new_directory=$phpftp_dir .  "/" . $select_directory; <BR>    phpftp_list( $phpftp_user, $phpftp_passwd, $new_directory ); <BR>} <BR><BR>function phpftp_mkdir( $phpftp_user, $phpftp_passwd, $phpftp_dir, $new_dir ) { <BR>    echo  "&lt;!-- function phpftp_mkdir --&gt; "; <BR>    $ftp = @phpftp_connect( $phpftp_user, $phpftp_passwd ); <BR>    if ( $phpftp_dir ==  "" ) { <BR>        $phpftp_dir= "/"; <BR>    } <BR>    if ( ! $ftp ) { <BR>        @ftp_quit( $ftp ); <BR>        phpftp_top(); <BR>        echo  "&lt;font color="#ff0000"&gt;&lt;strong&gt;FTP login failed!&lt;/strong&gt;&lt;/font&gt;&lt;p&gt;&lt;p&gt; "; <BR>        echo  "&lt;a href="ftp.php3"&gt;Start over?&lt;/a&gt; "; <BR>        phpftp_bottom(); <BR>    } else { <BR>        $dir_path = $phpftp_dir .  "/" . $new_dir; <BR>        @ftp_mkdir( $ftp, $dir_path ); <BR>        @ftp_quit( $ftp ); <BR>        phpftp_list( $phpftp_user, $phpftp_passwd, $phpftp_dir ); <BR>    } <BR>}; <BR>     <BR><BR>function phpftp_get( $phpftp_user, $phpftp_passwd, $phpftp_dir, $select_file ) { <BR>    $ftp = @phpftp_connect( $phpftp_user, $phpftp_passwd ); <BR>    if ( $phpftp_dir ==  "" ) { <BR>        $phpftp_dir= "/"; <BR>    } <BR>    if ( ( ! $ftp ) || ( ! @ftp_chdir( $ftp, $phpftp_dir ) ) ) { <BR>        @ftp_quit( $ftp ); <BR>        phpftp_top(); <BR>        echo  "&lt;font color="#ff0000"&gt;&lt;strong&gt;FTP login failed!&lt;/strong&gt;&lt;/font&gt;&lt;p&gt;&lt;p&gt; "; <BR>        echo  "&lt;a href="ftp.php3"&gt;Start over?&lt;/a&gt; "; <BR>        phpftp_bottom(); <BR>    } else { <BR>        srand((double)microtime()*1000000); <BR>        $randval = rand(); <BR>        $tmpfile= "/var/tmp/xfers/" . $select_file .  "." . $randval; <BR>        if ( ! ftp_get( $ftp, $tmpfile, $select_file, FTP_BINARY ) ) { <BR>            ftp_quit( $ftp ); <BR>            phpftp_top(); <BR>            echo  "&lt;font color="#ff0000"&gt;&lt;strong&gt;FTP get failed!&lt;/strong&gt;&lt;/font&gt;&lt;p&gt;&lt;p&gt; &lt;a href="ftp.php3"&gt;Start over?&lt;/a&gt; "; <BR>            phpftp_bottom(); <BR>        } else { <BR>            ftp_quit( $ftp ); <BR>            header(  "Content-Type: application/octet-stream" ); <BR>            header(  "Content-Disposition: attachment; filename=" . $select_file ); <BR>            readfile( $tmpfile ); <BR>        } <BR>        @unlink( $tmpfile ); <BR>    } <BR>} <BR><BR>function phpftp_put( $phpftp_user, $phpftp_passwd, $phpftp_dir, $userfile, $userfile_name ) { <BR>    srand((double)microtime()*1000000); <BR>    $randval = rand(); <BR>    $tmpfile= "/var/tmp/xfers/" . $userfile_name .  "." . $randval; <BR>    if ( ! @copy( $userfile, $tmpfile ) ) { <BR>        phpftp_top(); <BR>        echo  "&lt;font color="#ff0000"&gt;&lt;strong&gt;Upload failed!  Probably no space on server for temp file.&lt;/strong&gt;&lt;/font&gt;&lt;p&gt;&lt;p&gt; &lt;a href="ftp.php3"&gt;Start over?&lt;/a&gt; "; <BR>        phpftp_bottom(); <BR>    } else { <BR>        if ( ! $ftp = @phpftp_connect( $phpftp_user, $phpftp_passwd ) ) { <BR>            unlink( $tmpfile ); <BR>            phpftp_top();  <BR>            echo  "&lt;font color="#ff0000"&gt;&lt;strong&gt;FTP login failed!&lt;/strong&gt;&lt;/font&gt;&lt;p&gt;&lt;p&gt; &lt;a href="ftp.php3"&gt;Start over?&lt;/a&gt; "; <BR>            phpftp_bottom(); <BR>        } else { <BR>            ftp_put( $ftp, $userfile_name, $tmpfile, FTP_BINARY ); <BR>            ftp_quit( $ftp ); <BR>            unlink( $tmpfile ); <BR>            phpftp_list( $phpftp_user, $phpftp_passwd, $phpftp_dir ); <BR>        } <BR>    } <BR>} <BR><BR>switch( $function ) { <BR>    case  "dir"; <BR>        phpftp_list( $phpftp_user, $phpftp_passwd, $phpftp_dir ); <BR>        break; <BR>    case  "cd"; <BR>        phpftp_cd( $phpftp_user, $phpftp_passwd, $phpftp_dir, $select_directory ); <BR>        break; <BR>    case  "get"; <BR>        phpftp_get( $phpftp_user, $phpftp_passwd, $phpftp_dir, $select_file ); <BR>        break; <BR>    case  "put"; <BR>        phpftp_put( $phpftp_user, $phpftp_passwd, $phpftp_dir, $userfile, $userfile_name ); <BR>        break; <BR>    case  "mkdir"; <BR>        phpftp_mkdir( $phpftp_user, $phpftp_passwd, $phpftp_dir, $new_dir ); <BR>        break; <BR>    case  ""; <BR>        phpftp_login(); <BR>        break; <BR>} <BR>  <BR>?&gt;                   <br><br>
您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-4-5 21:14 , Processed in 0.059228 second(s), 23 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表