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 相关文章推荐
discuz 首页四格:最新话题+最新回复+热门话题+精华文章插件
Aug 19 PHP
php AJAX实例根据邮编自动完成地址信息
Nov 23 PHP
PHP 学习路线与时间表
Feb 21 PHP
php强制下载类型的实现代码
Apr 21 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-1 开始了解php
Jul 03 PHP
PHP静态调用非静态方法的应用分析
May 02 PHP
PHP遍历数组的三种方法及效率对比分析
Feb 12 PHP
100多行PHP代码实现socks5代理服务器[2]
May 05 PHP
Laravel 5.4向IoC容器中添加自定义类的方法示例
Aug 15 PHP
PHP面向对象之里氏替换原则简单示例
Apr 08 PHP
workerman结合laravel开发在线聊天应用的示例代码
Oct 30 PHP
PHP命名空间(namespace)原理与用法详解
Dec 11 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中如何使对象可以像数组一样进行foreach循环
2013/08/09 PHP
Yii2设置默认控制器的两种方法
2017/05/19 PHP
thinkphp实现附件上传功能
2017/05/26 PHP
laravel自定义分页效果
2017/07/23 PHP
js实现DIV的一些简单控制
2007/06/04 Javascript
jquery学习笔记二 实现可编辑的表格
2010/04/09 Javascript
使用jquery插件实现图片延迟加载技术详细说明
2011/03/12 Javascript
Js四则运算函数代码
2012/07/21 Javascript
JS+CSS实现六级网站导航主菜单效果
2015/09/28 Javascript
跟我学习javascript的全局变量
2015/11/16 Javascript
JavaScript实现Java中Map容器的方法
2016/10/09 Javascript
JavaScript表单验证完美代码
2017/03/02 Javascript
js实现3D图片展示效果
2017/03/09 Javascript
AngularJS  ng-repeat遍历输出的用法
2017/06/19 Javascript
Vue.js列表渲染绑定jQuery插件的正确姿势
2017/06/29 jQuery
JavaScript之浏览器对象_动力节点Java学院整理
2017/07/03 Javascript
微信小程序wx.request实现后台数据交互功能分析
2017/11/25 Javascript
[02:05]2014DOTA2西雅图邀请赛 专访啸天mik夫妻档
2014/07/08 DOTA
Python操作mongodb的9个步骤
2018/06/04 Python
Flask模拟实现CSRF攻击的方法
2018/07/24 Python
python项目对接钉钉SDK的实现
2019/07/15 Python
python3连接mysql获取ansible动态inventory脚本
2020/01/19 Python
在tensorflow中设置保存checkpoint的最大数量实例
2020/01/21 Python
django使用JWT保存用户登录信息
2020/04/22 Python
Anaconda的安装与虚拟环境建立
2020/11/18 Python
澳大利亚便宜的家庭购物网站:CrazySales
2018/02/06 全球购物
英国和爱尔兰最大的地毯零售商:Kukoon
2018/12/17 全球购物
牧马人澳大利亚官网:Wrangler澳大利亚
2019/10/08 全球购物
幼儿园亲子活动总结
2014/04/26 职场文书
2014年大学班级工作总结
2014/11/14 职场文书
2014年便民服务中心工作总结
2014/12/20 职场文书
上级领导检查欢迎词
2015/09/30 职场文书
党性教育心得体会(共6篇)
2016/01/21 职场文书
导游词之台湾阿里山
2019/10/23 职场文书
MySQL infobright的安装步骤
2021/04/07 MySQL
JavaScript如何利用Promise控制并发请求个数
2021/05/14 Javascript