📄 ftpclient.php
字号:
<?php
/*****************************************
function: 输出html头,它被函数phpftp_login()调用
*****************************************/
function phpftp_top() {
?>
<!-- function phpftp_top -->
<html>
<head>
<title>PHP FTP Client</title>
</head>
<body bgcolor="#ffffff">
<font face="courier">
<?
}
/********************************************
function: 结束html文件,它被函数phpftp_login()调用
********************************************/
function phpftp_bottom() {
?>
<!-- function phpftp_bottom -->
</font>
</body>
</html>
<?
}
/*************************************************************************
function: 让用户输入用户名和密码的表单,第一次请求这个页面时出现*************************************************************************/
function phpftp_login() {
phpftp_top();
?>
<!-- function phpftp_login -->
<p>
<form action="ftpclient.php" method=post>
Host:
<input name="phpftp_host" type="text" >
<p>
Login:
<input name="phpftp_user" type="text" >
<p>
Password:
<input name="phpftp_passwd" type="password">
<p>
Directory:
<input name="phpftp_dir" type="text">
<p>
<input type="hidden" name="function" value="dir">
<input type="submit" value="connect">
</form>
<p>
<?
phpftp_bottom();
}
/**********************************************************
$param: $phpftp_host 要连接的ftp服务器名称
$param: $phpftp_user 连接服务器所用的用户名
$param: $phpftp_passwd 用户名所对应密码
function: 这个函数建立与服务器的连接,它并不返回TRUE/FALSE。
它返回ftp连接标志。它被phpftp_list()调用。
**********************************************************/
function phpftp_connect($phpftp_host, $phpftp_user, $phpftp_passwd ) {
global $phpftp_host;
$ftp = ftp_connect($phpftp_host); //建立与ftp服务器的连接
if ( $ftp ) {
if ( ftp_login( $ftp, $phpftp_user, urldecode( $phpftp_passwd ) ) ) {
return $ftp; //以用户名登录
}
}
}
/**********************************************************
$param: $phpftp_host 要连接的接点名
$param: $phpftp_user 连接服务器所用的用户名
$param: $phpftp_passwd 用户名所对应密码
$param: $phpftp_dir 建立连接后所在的目录名
function: 这个函数在建立与服务器的连接后,列出目录$phpftp_dir
下的文件和目录(以.开头的文件不列出)
**********************************************************/
function phpftp_list( $phpftp_host,$phpftp_user, $phpftp_passwd, $phpftp_dir ) {
phpftp_top();
?>
<!-- function phpftp_list -->
<?
$ftp = @phpftp_connect($phpftp_host, $phpftp_user, $phpftp_passwd );
if ( ! $ftp ) {
?>
<strong>FTP login failed!</strong>
<a href="ftpclient.php">Start over?</a>
<?
phpftp_bottom();
} else {
if ( ! $phpftp_dir ) {
//默认为登录用户的用户目录
$phpftp_dir=ftp_pwd( $ftp );
}
if ( ! @ftp_chdir( $ftp, $phpftp_dir ) ) {
?>
<font color="#ff0000"><strong>Can't enter that directory!</strong></font><p><p>
<?
$phpftp_dir=ftp_pwd( $ftp );
}
echo "<strong>Current directory:</strong> " . $phpftp_dir . "<br>\n";
if ( $phpftp_dir == "/" ) {
$phpftp_dir="";
}
?>
<table border=0 cellspacing=20>
<?
if ( $contents = ftp_nlist( $ftp, "." ) ) {
$d_i=0; //记录目录的个数
$f_i=0; //记录文件的个数
sort($contents);
for ( $i=0; $i < count( $contents ); $i++ ) {
$file_size = ftp_size( $ftp, $contents[$i] );
if ( $file_size == -1 ) {
//-1表示为目录
$nlist_dirs[$d_i]=$contents[$i]; //包含该目录下所有子目录的数组
$d_i++; //目录个数加1
} else {
$nlist_files[$f_i]=$contents[$i]; //包含该目录下所有文件的数组
$nlist_filesize[$f_i]=$file_size; //记录文件大小的数组
$f_i++; //文件个数加1
}
}
?>
<tr><td>
<font face="courier"><strong>Directories</strong></font><br>
<form action="ftpclient.php" method=post>
<input type="hidden" name="function" value="cd">
<input type="hidden" name="phpftp_host" value="<? echo $phpftp_host; ?>">
<input type="hidden" name="phpftp_user" value="<? echo $phpftp_user; ?>">
<input type="hidden" name="phpftp_passwd" value="<? echo $phpftp_passwd; ?>">
<input type="hidden" name="phpftp_dir" value="<? echo $phpftp_dir; ?>">
<select name="select_directory" size="10" width="100">
<!--列出所有的目录-->
<?
for ( $i=0; $i < count( $nlist_dirs ); $i++ ) {
echo "<option value=\"" . $nlist_dirs[$i] . "\">" . $nlist_dirs[$i] . "</option>\n";
}
?>
</select><br>
<input type="submit" value="Enter Directory">
</form>
</td><td>
<font face="courier"><strong>Files</strong></font><br>
<form action="ftpclient.php" method=post>
<input type="hidden" name="function" value="get">
<input type="hidden" name="phpftp_host" value="<? echo $phpftp_host; ?>">
<input type="hidden" name="phpftp_user" value="<? echo $phpftp_user; ?>">
<input type="hidden" name="phpftp_passwd" value="<? echo $phpftp_passwd; ?>">
<input type="hidden" name="phpftp_dir" value="<? echo $phpftp_dir; ?>">
<!--列出所有的文件-->
<select name="select_file" size="10">
<?
for ( $i=0; $i < count( $nlist_files ); $i++ ) {
echo "<option value=\"" . $nlist_files[$i] . "\">" . $nlist_files[$i] ." ($nlist_filesize[$i] bytes)". "</option>\n";
}
?>
</select><br>
<input type="submit" value="Download File">
</form>
</td></tr>
<?
} else {
?>
<p><font color="#ff0000"><strong>Directory empty or not readable</strong></font><p>
<?
}
?>
</table>
<!--转向上一层目录-->
<p>
<form action="ftpclient.php" method=post>
<?
$cdup=dirname( $phpftp_dir );
if ( $cdup == "" ) {
$cdup="/";
}
?>
<input type="hidden" name="function" value="dir">
<input type="hidden" name="phpftp_host" value="<? echo $phpftp_host; ?>">
<input type="hidden" name="phpftp_user" value="<? echo $phpftp_user; ?>">
<input type="hidden" name="phpftp_passwd" value="<? echo $phpftp_passwd; ?>">
<input type="hidden" name="phpftp_dir" value="<? echo $cdup; ?>">
<input type="submit" value="Go up one directory">
</form>
<!--上载文件-->
<p>
<form enctype="multipart/form-data" action="ftpclient.php" method=post>
<input type="hidden" name="max_file_size" value="1000000">
<input type="hidden" name="phpftp_host" value="<? echo $phpftp_host; ?>">
<input type="hidden" name="phpftp_user" value="<? echo $phpftp_user; ?>">
<input type="hidden" name="phpftp_passwd" value="<? echo $phpftp_passwd; ?>">
<input type="hidden" name="phpftp_dir" value="<? echo $phpftp_dir; ?>">
<input type="hidden" name="function" value="put">
<input type="submit" value="Upload this:">
<input name="userfile" type="file">
</form>
<p>
<form action="ftpclient.php" method=post>
<input type="hidden" name="function" value="mkdir">
<input type="hidden" name="phpftp_host" value="<? echo $phpftp_host; ?>">
<input type="hidden" name="phpftp_user" value="<? echo $phpftp_user; ?>">
<input type="hidden" name="phpftp_passwd" value="<? echo $phpftp_passwd; ?>">
<input type="hidden" name="phpftp_dir" value="<? echo $phpftp_dir; ?>">
<input type="submit" value="Make subdirectory:">
<input name="new_dir" type="text">
<?
ftp_quit( $ftp );
phpftp_bottom();
}
}
/**************************************************
$param: $phpftp_user 连接服务器所用的用户名
$param: $phpftp_passwd 用户名所对应密码
$param: $phpftp_dir 登录后所在的目录名
$param: $select_directory 选择要进入的目录名
function: 这个函数进入所选的目录并列出这个目录下的内容
****************************************************/
function phpftp_cd( $phpftp_host, $phpftp_user, $phpftp_passwd, $phpftp_dir, $select_directory ) {
?>
<!-- function phpftp_cd -->
<?
//要进入的目录的路径
$new_directory=$phpftp_dir . "/" . $select_directory;
phpftp_list( $phpftp_host, $phpftp_user, $phpftp_passwd, $new_directory );
}
/*************************************************
$param: $phpftp_user 连接服务器所用的用户名
$param: $phpftp_passwd 用户名所对应密码
$param: $phpftp_dir 登录后所在的目录名
$param: $new_dir 要新建的目录名称
function: 在当前目录下新建一个名称为$new_dir的目录
**************************************************/
function phpftp_mkdir( $phpftp_host, $phpftp_user, $phpftp_passwd, $phpftp_dir, $new_dir ) {
?>
<!-- function phpftp_mkdir -->
<?
if ( $phpftp_dir == "" ) {
$phpftp_dir="/";
}
if ( ! $ftp = phpftp_connect($phpftp_host, $phpftp_user, $phpftp_passwd) ) {
@ftp_quit( $ftp );
phpftp_top();
?>
<font color="#ff0000"><strong>FTP login failed!</strong></font><p><p>
<a href="ftpclient.php">Start over?</a>
<?
phpftp_bottom();
} else {
$dir_path = $phpftp_dir . "/" . $new_dir;
@ftp_mkdir( $ftp, $dir_path );
@ftp_quit( $ftp );
phpftp_list( $phpftp_host, $phpftp_user, $phpftp_passwd, $phpftp_dir );
}
};
/***********************************************
$param: $phpftp_user 连接服务器所用的用户名
$param: $phpftp_passwd 用户名所对应密码
$param: $phpftp_dir 登录后所在的目录名
$param: $select_file 所选择的文件名称
function: 下载指定的文件
************************************************/
function phpftp_get( $phpftp_host, $phpftp_user, $phpftp_passwd, $phpftp_dir, $select_file ) {
$ftp = @phpftp_connect( $phpftp_host, $phpftp_user, $phpftp_passwd );
if ( $phpftp_dir == "" ) {
$phpftp_dir="/";
}
if ( ( ! $ftp ) || ( ! @ftp_chdir( $ftp, $phpftp_dir ) ) ) {
//登录失败
@ftp_quit( $ftp );
phpftp_top();
?>
<font color="#ff0000"><strong>FTP login failed!</strong></font><p><p>
<a href="ftpclient.php">Start over?</a>
<?
phpftp_bottom();
} else {
//下载指定的文件
srand((double)microtime()*1000000);
$randval = rand();
$tmpfile="/tmp/" . $select_file . "." . $randval;
if ( ! ftp_get( $ftp, $tmpfile, $select_file, FTP_BINARY ) ) {
ftp_quit( $ftp );
phpftp_top();
?>
<font color="#ff0000"><strong>FTP get failed!</strong></font><p><p>
<a href="ftpclient.php">Start over?</a>
<?
phpftp_bottom();
} else {
//读取文件的内容
ftp_quit( $ftp );
header( "Content-Type: application/octet-stream" );
header( "Content-Disposition: attachment; filename=" . $select_file );
readfile( $tmpfile );
}
@unlink( $tmpfile );
}
}
/********************************************
$param: $phpftp_user 连接服务器所用的用户名
$param: $phpftp_passwd 用户名所对应密码
$param: $phpftp_dir 登录后所在的目录名
function: 上载指定的文件
***********************************************/
function phpftp_put( $phpftp_host, $phpftp_user, $phpftp_passwd, $phpftp_dir, $userfile, $userfile_name ) {
srand((double)microtime()*1000000);
$randval = rand();
$tmpfile="/tmp/" . $userfile_name . "." . $randval;
if ( ! @copy( $userfile, $tmpfile ) ) {
phpftp_top();
?>
<font color="#ff0000"><strong>Upload failed! Can't create temp file?</strong></font>
<p><p>
<a href="ftpclient.php">Start over?</a>
<?
phpftp_bottom();
} else {
//登录失败
if ( ! $ftp = @phpftp_connect($phpftp_host, $phpftp_user, $phpftp_passwd ) ) {
unlink( $tmpfile );
phpftp_top();
?>
<font color="#ff0000"><strong>FTP login failed!</strong></font><p><p>
<a href="ftpclient.php">Start over?</a>
<?
phpftp_bottom();
} else {
//上载文件
ftp_chdir( $ftp, $phpftp_dir );
ftp_put( $ftp, $userfile_name, $tmpfile, FTP_BINARY );
ftp_quit( $ftp );
unlink( $tmpfile );
phpftp_list( $phpftp_host, $phpftp_user, $phpftp_passwd, $phpftp_dir );
}
}
}
switch( $function ) {
case "dir";
phpftp_list($phpftp_host, $phpftp_user, $phpftp_passwd, $phpftp_dir );
break;
case "cd";
phpftp_cd( $phpftp_host, $phpftp_user, $phpftp_passwd, $phpftp_dir, $select_directory );
break;
case "get";
phpftp_get( $phpftp_host, $phpftp_user, $phpftp_passwd, $phpftp_dir, $select_file );
break;
case "put";
phpftp_put( $phpftp_host, $phpftp_user, $phpftp_passwd, $phpftp_dir, $userfile, $userfile_name );
break;
case "mkdir";
phpftp_mkdir( $phpftp_host, $phpftp_user, $phpftp_passwd, $phpftp_dir, $new_dir );
break;
case "";
phpftp_login();
break;
}
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -