PHP的FTP学习(三)


Posted in PHP onOctober 09, 2006

By Vikram Vaswani
Melonfire
November 07, 2000
现在,我们已经接触了PHP关于FTP的大量函数,但这仅仅只是函数,离我们的目标还远远不够,要显示出这些函数的真正力量,我们应该建立一个程序,这个程序能以WEB方式上传,下载文件---这就是我们将要做的!

在我们进入代码前,我想要告诉大家的是,这个例子仅仅只是为了向大家解释PHP的各种FTP函数的使用,很多方面还不够完善,比如说,错误分析等,至于你想应用到你自己的程序中,你应该进行一些修改!

程序包括以下几个文件:
index.html - 登录文件

actions.php - 程序必需的FTP代码

include.php - 程序主界面,它显示文件列表和控制按钮。

让我们从 "index.html"开始吧:  
--------------------------------------------------------------------------------
<table border=0 align=center>
<form action="actions.php" method=post>
<input type=hidden name=action value=CWD>
<tr>
<td>
Server
</td>
<td>
<input type=text name=server>
</td>
</tr>

<tr>
<td>
User
</td>
<td>
<input type=text name=username>
</td>
</tr>

<tr>
<td>
Password
</td>
<td>
<input type=password name=password>
</td>
</tr>

<tr>
<td colspan=2 align=center>
<input type="submit" value="Beam Me Up, Scotty!">
</td>
</tr>

</form>
</table>
--------------------------------------------------------------------------------
这是一个登录表单,有一个服务器名称、用户名、密码,输入框。输入的变量将会被存到$server, $username 和 $password 变量中,表单提交后,调用actions.php,它将初始化FTP联接。

注意那个“hidden” 它传给action.php一个变量$action ,值为CWD。

这是action.php文件的源码:
--------------------------------------------------------------------------------
<html>
<head>
<basefont face=Arial>
</head>
<body>

<!-- the include.php interface will be inserted into this page -->

<?

//检查表单传来的数据,不全则报错,要想程序完善的话,这里应该有更全的输入检测功能
if (!$server || !$username || !$password)
{
echo "提交数据不全!";
}
else
{
// keep reading
}

?>

</body>
</html>
--------------------------------------------------------------------------------

接下来是变量 "actions". 程序允许以下的action:

"action=CWD"

改变工作目录

"action=Delete"

删除指定文件

"action=Download"

下载指定文件

"action=Upload"

上传指定文件

如果你仔细检查文件include.php,在里面包括一个HTML界面,你将会看到,它包括许多表单,每一个指向一个特定的功能,每一个表单包含一个field(通常隐藏) ,当表单提交,相应的功能将被执行。

例如:按下“删除”,"action=Delete"就被传送给"actions.php"  

为了操作这四个功能,actions.php中代码如下:   
--------------------------------------------------------------------------------
<?
// action: 改变目录
if ($action == "CWD")
{
// 具体代码
}

// action: 删除文件
else if ($action == "Delete")
{
// 具体代码
}
// action: 下载文件
else if ($action == "Download")
{
// 具体代码
}
// action: 上传文件
else if ($action == "Upload")
{
// 具体代码
}

?>
--------------------------------------------------------------------------------
以上的具体代码将会实现指定的功能,并退出循环,它们都包含以下步骤:

--------------------------------------------------------------------------------
通过定制的函数联接并登录FTP服务器
connect();

转向适当的目录

执行选择的功能

刷新列表,以察看改变的结果

通过include("include.php"),显示文件列表和控制按钮

关闭联接
--------------------------------------------------------------------------------
注意:
以下功能支持多文件操作- 即 "action=Delete" 和 "action=Download" 它们使用FOR循环来实现。
变量$cdir 和 $here 将在每一阶段实时更新。

现在终于到了我们的第三个文件,include.php 它为程序建立起一个用户界面。

"include.php" 包含三个表单,一些PHP代码获取当前的目录列表并将它们存入三个变量
$files (包括当前目录下的文件),
$file_sizes (相应的文件大小),
and $dirs (包含子目录名)

第一个表单使用$dirs 产生一个下拉式目录列表,对应于“action=CWD”。

第二个表单使用$files  $file_sizes创建一个可用的文件列表,每一个文件使用一个checkbox。这个表单的action对应于"action=Delete" and "action=Download"

第三个表单用来上传一个文件到FTP站点,如下:
--------------------------------------------------------------------------------
<form enctype="multipart/form-data" action=actions.php4 method=post>
...
<input type=file name=upfile>
...
</form>
--------------------------------------------------------------------------------
当PHP以这种方式接收到一个文件名,一些变量就产生了,这些变量指定文件的大小,一个临时的文件名以及文件的类型,最初的文件名存在$upfile_name,一旦上传后文件名便存入$upfile中(这个变量是由PHP自己创建的)
通过这些信息,我们就可以创建以下的语句了:
--------------------------------------------------------------------------------
ftp_put($result, $upfile_name, $upfile, FTP_BINARY);
--------------------------------------------------------------------------------

PHP 相关文章推荐
理解PHP5中static和const关键字的区别
Mar 19 PHP
php学习之function的用法
Jul 14 PHP
php实现的mongodb操作类实例
Apr 03 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
Dec 22 PHP
Symfony实现行为和模板中取得request参数的方法
Mar 17 PHP
基于PHP实现商品成交时发送短信功能
May 11 PHP
PHP二分查找算法示例【递归与非递归方法】
Sep 29 PHP
实现PHP搜索加分页
Oct 12 PHP
PHP递归实现汉诺塔问题的方法示例
Nov 25 PHP
PHP常见数组排序方法小结
Aug 20 PHP
详解PHP 二维数组排序保持键名不变
Mar 06 PHP
浅谈laravel中的关联查询with的问题
Oct 10 PHP
我的论坛源代码(六)
Oct 09 #PHP
我的论坛源代码(五)
Oct 09 #PHP
杏林同学录(五)
Oct 09 #PHP
PHP的FTP学习(二)
Oct 09 #PHP
杏林同学录(四)
Oct 09 #PHP
PHP的FTP学习(一)
Oct 09 #PHP
PHP VS ASP
Oct 09 #PHP
You might like
php文件上传 你真的掌握了吗
2016/11/28 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
2018/06/13 PHP
在Javascript中定义对象类别
2006/12/22 Javascript
javascript 对象比较实现代码
2009/04/27 Javascript
flexigrid 类似ext grid的JS表格代码
2010/07/17 Javascript
js异步加载的三种解决方案
2013/03/04 Javascript
动态创建script标签实现跨域资源访问的方法介绍
2014/02/28 Javascript
jquery实现仿JqueryUi可拖动的DIV实例
2015/07/31 Javascript
js实现商城星星评分的效果
2015/12/29 Javascript
JS实现动态生成表格并提交表格数据向后端
2020/11/25 Javascript
jQuery AJAX timeout 超时问题详解
2016/06/21 Javascript
微信小程序 less文件编译成wxss文件实现办法
2016/12/05 Javascript
JS中Array数组学习总结
2017/01/18 Javascript
jQuery实现复选框的全选和反选
2017/02/02 Javascript
JS实现的自动打字效果示例
2017/03/10 Javascript
angular4中关于表单的校验示例
2017/10/16 Javascript
jQuery实现碰到边缘反弹的动画效果
2018/02/24 jQuery
使用Angular CLI从蓝本生成代码详解
2018/03/24 Javascript
vue-image-crop基于Vue的移动端图片裁剪组件示例
2018/08/28 Javascript
Python strip lstrip rstrip使用方法
2008/09/06 Python
用Python编写一个简单的FUSE文件系统的教程
2015/04/02 Python
python生成IP段的方法
2015/07/07 Python
python实现京东秒杀功能
2018/07/30 Python
Flask配置Cors跨域的实现
2019/07/12 Python
Python 面向对象之封装、继承、多态操作实例分析
2019/11/21 Python
Python的pygame安装教程详解
2020/02/10 Python
linux 下selenium chrome使用详解
2020/04/02 Python
Python 执行矩阵与线性代数运算
2020/08/01 Python
CSS3实现超慢速移动动画效果非常流畅无卡顿
2014/06/15 HTML / CSS
全陪导游欢迎词
2014/01/17 职场文书
酒店总经理职务说明书
2014/02/26 职场文书
作文评语大全
2014/04/23 职场文书
促销活动总结范文
2014/04/30 职场文书
一年级语文下册复习计划
2015/01/17 职场文书
感谢信格式范文
2015/01/22 职场文书
nginx 配置指令之location使用详解
2022/05/25 Servers