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中date()得出的时间为什么不是当前时间的解决方法
Jun 30 PHP
php面向对象全攻略 (十二) 抽象方法和抽象类
Sep 30 PHP
将一维或多维的数组连接成一个字符串的php代码
Aug 08 PHP
PHP 字符串正则替换函数preg_replace使用说明
Jul 15 PHP
php 字符串替换的方法
Jan 10 PHP
php class中public,private,protected的区别以及实例分析
Jun 18 PHP
thinkphp控制器调度使用示例
Feb 24 PHP
C#使用PHP服务端的Web Service通信实例
Apr 08 PHP
PHP模拟post提交数据方法汇总
Feb 16 PHP
php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
Nov 09 PHP
PHP之多条件混合筛选功能的实现方法
Oct 09 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
Mar 30 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
星际争霸兵种名称对照表
2020/03/04 星际争霸
php实例分享之通过递归实现删除目录下的所有文件详解
2014/05/15 PHP
通过php修改xml文档内容的方法
2015/01/23 PHP
PHP中使用BigMap实例
2015/03/30 PHP
PHP简单获取及判断提交来源的方法
2016/04/22 PHP
CI框架中$this-&gt;load-&gt;library()用法分析
2016/05/18 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
2017/06/17 PHP
javascript面向对象编程代码
2011/12/19 Javascript
JavaScript—window对象使用示例
2013/12/09 Javascript
JavaScript的事件代理和委托实例分析
2015/03/25 Javascript
jQuery Form 表单提交插件之formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的应用
2016/01/23 Javascript
javascript原型继承工作原理和实例详解
2016/04/07 Javascript
js实现简单的选项卡效果
2017/02/23 Javascript
微信小程序中form 表单提交和取值实例详解
2017/04/20 Javascript
BootStrap Table 后台数据绑定、特殊列处理、排序功能
2017/05/27 Javascript
JS操作字符串转数字的常见方法示例
2019/10/29 Javascript
OpenLayers3实现测量功能
2020/09/25 Javascript
[01:37]PWL S2开团时刻DAY1&2——这符有毒
2020/11/20 DOTA
python实现查找excel里某一列重复数据并且剔除后打印的方法
2015/05/26 Python
约瑟夫问题的Python和C++求解方法
2015/08/20 Python
python占位符输入方式实例
2019/05/27 Python
numpy和pandas中数组的合并、拉直和重塑实例
2019/06/28 Python
Python Django的安装配置教程图文详解
2019/07/17 Python
Python如何实现定时器功能
2020/05/28 Python
基于Python+QT的gui程序开发实现
2020/07/03 Python
Pandas中两个dataframe的交集和差集的示例代码
2020/12/13 Python
HTML5新增元素如何兼容旧浏览器有哪些方法
2014/05/09 HTML / CSS
意大利咖啡、浓缩咖啡和浓缩咖啡机:illy caffe
2019/03/20 全球购物
汽车制造与装配专业自荐信范文
2014/01/02 职场文书
厂长岗位职责
2014/02/19 职场文书
2014年党员个人工作总结
2014/12/02 职场文书
演讲开场白和结束语
2015/05/29 职场文书
信息技术国培研修日志
2015/11/13 职场文书
小学五年级(说明文3篇)
2019/08/13 职场文书
python实现自动化群控的步骤
2021/04/11 Python
Linux、ubuntu系统下查看显卡型号、显卡信息详解
2022/04/07 Servers