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 相关文章推荐
图书管理程序(一)
Oct 09 PHP
php GD绘制24小时柱状图
Jun 28 PHP
php zip文件解压类代码
Dec 02 PHP
php下尝试使用GraphicsMagick的缩略图功能
Jan 01 PHP
PHP函数addslashes和mysql_real_escape_string的区别
Apr 22 PHP
PHP中new static()与new self()的区别异同分析
Aug 22 PHP
mod_php、FastCGI、PHP-FPM等PHP运行方式对比
Jul 02 PHP
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法
Feb 15 PHP
Yii使用DeleteAll连表删除出现报错问题的解决方法
Jul 14 PHP
Laravel核心解读之异常处理的实践过程
Feb 24 PHP
php/JS实现的生成随机密码(验证码)功能示例
Jun 06 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
Feb 21 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
索尼SONY ICF-7600A(W)电路分析
2021/03/01 无线电
PHP中文件缓存转内存缓存的方法
2011/12/06 PHP
与文件上传有关的php配置参数总结
2013/06/14 PHP
PHP图片等比缩放类SimpleImage使用方法和使用实例分享
2014/04/10 PHP
smarty高级特性之过滤器的使用方法
2015/12/25 PHP
PHP实现cookie跨域session共享的方法分析
2019/08/23 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
tp5.1 框架数据库高级查询技巧实例总结
2020/05/25 PHP
JS 常用校验函数
2009/03/26 Javascript
JQuery.Ajax之错误调试帮助信息介绍
2013/07/04 Javascript
node.js中的querystring.parse方法使用说明
2014/12/10 Javascript
jQuery无刷新分页完整实例代码
2015/10/27 Javascript
快速掌握Node.js事件驱动模型
2016/03/21 Javascript
微信小程序 检查接口状态实例详解
2017/06/23 Javascript
使用vue-resource进行数据交互的实例
2017/09/02 Javascript
Node.js 使用AngularJS的方法示例
2018/05/11 Javascript
VUE2.0+ElementUI2.0表格el-table循环动态列渲染的写法详解
2018/11/30 Javascript
vue使用better-scroll实现滑动以及左右联动
2020/06/30 Javascript
js实现搜索提示框效果
2020/09/05 Javascript
Python编程入门之Hello World的三种实现方式
2015/11/13 Python
使用rst2pdf实现将sphinx生成PDF
2016/06/07 Python
Python实现合并同一个文件夹下所有PDF文件的方法示例
2018/04/28 Python
Python中psutil的介绍与用法
2019/05/02 Python
python如何获取列表中每个元素的下标位置
2019/07/01 Python
tensorflow多维张量计算实例
2020/02/11 Python
乌克兰在线药房:Аптека24
2019/10/30 全球购物
机械设计制造专业个人求职信
2013/09/25 职场文书
户外拓展活动方案
2014/02/11 职场文书
观看《永远的雷锋》心得体会
2014/03/12 职场文书
社会稳定风险评估方案
2014/06/02 职场文书
考试作弊检讨书
2014/10/21 职场文书
管理者日常工作必备:22条企业管理流程模板!
2019/07/12 职场文书
关于食品安全的演讲稿范文(三篇)
2019/10/21 职场文书
六年级作文之预言作文
2019/10/25 职场文书
SQL优化老出错,那是你没弄明白MySQL解释计划用法
2021/11/27 MySQL
Android自定义双向滑动控件
2022/04/19 Java/Android