PHP设计留言本

2024-09-11

PHP设计留言本(精选4篇)

PHP设计留言本 篇1

0绪论

随着科技的不断进步和网络技术的持续发展,网络已经成为我们获取信息的首要媒介之一,而文档则是这些资讯的重要载体。网络文库系统,是在线互动式分享文档的平台。文档由用户上传和发布,文库自身不编辑或修改用户上传的文档内容。用户可以在线阅读和下载这些文档,实现资源的有机共享,它能保证没有权限的用户不能修改和复制源文档,更好的保证文档的原始性和安全性。目前比较知名在线文库有百度、豆丁、道客巴巴等。

1 背景和意义

在线文库能提供信息存储的空间,方便对各类文档的分类浏览和下载保存。以我台为例,早年由于没有统一的存储规范,个人的存储习惯对文档的分类起了决定性的作用。另外许多文件及材料只能通过内部邮件、纸质公示或者口头传达给部门和个人,这样做引起网络资源的浪费、纸张油墨等办公材料损耗或者造成意思传达不清。同时出于安全保密方面的考虑,很多资料只能在内网上传播,而目前的档案系统由于其自身设计和功能原因,并不适合全台职工上传和浏览下载各类资讯。

这就需要我们台或者局拥有自己的在线文库系统来解决上述问题。在线文库系统是我所写的831台信息管理平台(如图1)的主要组成部分,现在以此为例,讲述在线文库系统的设计和实现。

2 实现方式选择

要进行文档的在线阅读,我总结后,主要有以下几种实现方式:

一、文档用FlashPaper或者print2flash直接转成SWF,最后用FlexPaper实现浏览;

二、文档用OpenOffice转成PDF,然后用pdf2swf转成SWF,最后用FlexPaper实现浏览 ;

三、文档用MSOffice转成PDF,然后用pdf2swf转成SWF,最后用FlexPaper实现浏览。

先来看第 一个方法,它使用Flashpaper或者print2flash实现文档转换成SWF,其实很简单,以Flashpaper为例,程序里使用CMD调用的命令是:

C:Program FilesMacromediaFlashPaper2FlashPrinter.exe xxx.ppt -o xxx.swf

转换原理是:通过虚拟打印,取得内容直接生成SWF,所以转换一个文档就需要一个虚拟打印机的运行,中间会弹出打印和打开文档的窗口。不能并发使用,也就是说只能同时转换一个文档,这个方案不符合要求。

第二和第三个方案多了一个转换成PDF的中间环节, 一个是使用原Sun公司的OpenOffice,一个是使用微软的MSOffice,相比而言OpenOffice不只是一个办公软件,也是一个开发平台,可以基于它提供的应用程序接口组建自己的产品。我更倾向于第二种方案。

3 编程语言和工具

要设计一个B/S系统,我们首先要确定的就是编写该系统的语言,然后我们根据该系统的功能需求来选择我们所需要的一些工具和插件。

3.1为什么是PHP

在用PHP之前,我先在Myeclipse上以JAVA+Tomcat为基础参考一些资料写了一个文档在线转换程序(如图2),实现了文档的转换功能。也许是JAVA功底有限,文档大于3M的时候会转换的很慢,容易出现卡死,而且个人觉得PHP在调用效率方面不会比JAVA弱。

PHP由1995年结合Cyuyan1推出第一个版本发展到目前主流的PHP5乃至PHP6,其语言已经相当成熟。它以其开放、免费、可嵌入HTML、动态处理图像、效率高、基于服务器端可以运行在UNIX、LINUX、WINDOWS下等的特点得到众多程序员的推崇。

目前网络上并没有的PHP实现文库的完整代码,有也都是在特定框架下的,比如织梦、帝国等,但是框架所带来的比如不易修改、安全性差等问题也很明显。当然最主要的原因还是我对PHP语言更熟悉,用它来架站和编程对我来说更加方便,也更具有挑战性。

3.2工具及插件

首先是编译的环境,这里需要Apache+PHP+MySQL+phpMyAdmin+Zend Loader的编译环境,可以使用phpStudy、phpnow等集成工具实现。我们选择Apache+PHP5.3+ISAPI模式。

开发工具出于对eclipse的熟悉,所以此次编程平台选择EclipsePHP Studio,简称“EPP”。EPP使用的Eclipse核心编译,是一个为PHP开发者提供的优秀的大型IDE开发软件。并且集成了JDK和简体中文系统,专门针对辅助PHP代码的开发和调试,集成了代码高亮,函数跟踪,实时纠错等功能。同时还增加了协作开发版本服务器功能:SVN,CVS。

我们之前已经选择好了文库的实现方案,所以插件的选择也很明确。主要有办公软件OpenOffice、格式转换软件爱你Swftools和一个开源轻量级的在浏览器上显示各种文档的组件FlexPaper。

4 文库结构和数据库设计

由于网站需要进行人机交互和大量数据转换和处理,我们的网站结构力求清晰明了,数据库设计要求效率实用。

4.1网站结构

程序结构从功能上来分析,前台至少需要一个上传输入页面(如图3),一个文档列表页面以及文档在线浏览和下载页面。后台我们需要数据库连接页面、文档后台转换处理页面、多线程处理页面、分页处理页面和各类自定义变量页面等。图3左侧为我初期构建时网站结构。

FlexPaper需要作为一个独立的组件加到网站里,便于调用。当然为了丰富网站功能,我们还可以加入多个应用系统,以831台信息管理平台为例,除了文库在线系统,还加入了用户登录系统、后台管理系统、工作记录系统、图像浏览系统、数据报表系统(如图4)、信息检索系统等。

4.2数据库结构设计

以文库功能来看,我们需要一张存储文档基本信息的表doctable,另外为了方便对文库分类,需要一张分类表docclass,另外为了后面的用户权限和管理,需要一张用户表usertable。这里主要看来表doctable的结构。

5 主要编程代码和说明

在源代码方面,调用插件实现文档转换的代码是最为重要的,具体如下:

6 要注意的问题和小结

在做这个项目的过程里,遇到的问题也不少,比如2007版EXCEL不能被顺利转换,我的解决方法是为这类文档加判断,然后在后台转换成可以被转换的类型,并保留原文档。如果出现乱码问题可能是字符集,文档也可以采用该方式转换,但工具不一定为swftools。用PHP通过上述方法我们可以实现文档的在线转换和浏览,并保存原有文档,让大家快速浏览的同时保证原文档不被修改和没有相关权限的人员下载(如图5)。

在信息流通量日益增大的现在,在线文库的出现很好的提高了信息的准确性和高效性。而在831台信息管理平台中占据重要地位在线文库规范和保证了文档资讯的浏览和存储,为我台提供了一个局文件下达公示、部门制度推广阅览、全台职工分享和学习的网络平台,在一定程度上也为迎接大数据时代的到来做好了相关准备。

摘要:笔者根据最近编写的831台信息管理平台阐述了一个PHP在线文库系统的设计与实现,并对系统的总体结构设计和程序作了详细的说明。该系统采用Apache服务器技术,以MySQL作为系统数据库,主要功能定位于通过互联网实现文档的上传下载和在线阅读,实现多种信息资源有机共享。整个系统的结构力求清晰明了,实用美观,方便用户使用。

关键词:在线文库,PHP技术,B/S结构,数据库

基于PHP技术的动态网站设计 篇2

因此,建设这样的一个网站是有必要的。

1 下载网站的初步发展

1.1 下载网站的开发目的

现在网络发展迅速,和计算机相关的资源复杂多样。另外,现在计算机与各行各业联系紧密,各种资源都在网上传播。这个开发项目的目的是通过PHP技术实现资源的下载、异地管理,来满足日益增加的对网络资源的需求。

1.2 该网站的性能

1.2.1 浏览速度快

1.2.2 栏目清楚

网站的设计采用树型结构,条理清楚.每个页面都有导航条,可以随意进入你想访问的页面。

1.2.3 便于管理

采用先进技术,通过网络可以异地访问服务器,对数据库进行更新、添加等操作。

1.2.4 安全

由于本网站管理系统有密码安全登陆系统,对服务器设置了不同的管理权限,从而保证了网站的安全性,尽量避免了病毒、黑客的侵入。

1.2.5 页面简洁大方

1.3 网站的运行环境

客户端计算机采用586以上机型,客户端应用程序可以稳定的运行在UNIX/LINUX/Windows95/98/2000/ME/XP等多种操作系统之上,采用IE或Netscape等作为客户端浏览器,可以采用SQL Server Client Network或MYSQL连接数据库。

服务器采用通用服务器,采用UNIX/LINUX/Windows 98/ME/XP或Windows 2000作为操作系统,数据库系统(DBMS)采用MYSQL连接。数据库既可以安装在远程服务器上也可以安装在本地计算机上,安装在远程服务器上,则需通过网络连接。

2 下载网站的功能描述

这个网站分为前台(用户端浏览器)、后台(服务器)管理。

2.1 浏览器的结构

浏览页面主要有,网站主页,系统软件、网络安全、教育教学、应用软件、多媒体类、编程技术等页面。还有下载排行、站内搜索、信息发布等功能。其结构如图1。

2.2 服务器端功能

主要分管理员登陆和网站维护操作。

2.2.1 管理员登陆

点击相关链接,出现管理员登陆界面,用户可以用不同的管理员身份登录系统,不同的管理员具有不同的操作权限入正确的管理员和密码,点击"确定"按钮,进入主界面。点击"取消"按钮,退出。连续三次输入错误的管理员和密码,网页关闭。管理者通过密码登陆进入,可以对数据库进行各种操作。达到网站安全,防止出现具有毁坏性质的侵入。

2.2.2 网站维护

管理员进入管理网页,通过网页可以向数据库中添加、删除、修改数据。更新下载排行统计访问人数的功能。

3 设计方案和目标

3.1 设计方案

这是基于个人的网站。目前的情况是:网络环境情况具备,数据库系统使用多平台都支持的MYSQL软件。为了充分利用网络环境提高效率,希望实现其功能。数据库脚本可在Mysql中运行并产生数据库表;这个网站采用PHP语言编译,PHP和MYSQL是目前最好的搭配组合。MYSQL支持SQL的代码和语言。通过调用函数实现网页与数据库的连接。

3.2 目标

3.2.1 实现用户的自由访问,下载资源

3.2.2 实现对网站的异地管理,维护

本站是针对PHP和MYSQL设计的,在构思网站的设计框架时,深入考虑了PHP和MYSQL的各项功能,并对其运行机制进行分析。综合各类资料及分析,总结归纳出考核的几个知识点:表、查询、网页、数据库。其中,表是属于通用数据库部分,着重考虑数据库的基本概念,包括表的结构、索引和关系,在表的结构中,需要考察组成表的各个字段、字段的类型、字段的大小以及字段的各种属性,字段的属性将根据其类型不同而有所区别;查询和数据访问页都属于MYSQL扩展部分,着重考虑的是对于MYSQL的操作运用,即运用MYSQL来实现特定的数据库应用。

4 相关技术介绍

4.1 PHP网页编程语言

PHP(Hypertext Preprocessor:超文本预处理程序)是一种服务器端HTML-嵌入式脚本描述语言.它用来在网站的服务器端快速有效的创建动态网页,其执行效率比ASP或早期的CGI都高一些。它的特点有:

语言简单、紧凑、使用灵活、方便,它是C、JAVA、PERL等多种语言的结合,以C为主。拥有多种运算符、运算类型、表达式类型多样化,数据结构丰富,用户可以定义自己的类和对象,实现自己想要的数据构和相应的操作函数。

语法限制不太严格,程序设计自由渡很大。

PHP嵌入在HTML文档中。这使得学习这种语言十分容易。

良好的移植性。可以很容易的跨平台使用。

运行效率高。

强大的数据库支持和丰富的函数库。PHP代码是完全免费的。任何人都可以访问PHP的Web站点。

PHP是开放的。用户可以按照自己的意愿编写程序。

PHP语言的基本嵌入格式:

4.2 MySQL服务器

MySQL是一个精巧的SQL数据库管理系统,虽然它不是开放源代码的产品,但在某些情况下你可以自由使用。由于它的强大功能、灵活性、丰富的应用编程接口(API)以及精巧的系统结构,受到了广大自由软件爱好者甚至是商业软件用户的青睐,特别是与Apache和PHP/PERL结合,为建立基于数据库的动态网站提供了强大动力。

1)MySQL权限系统的主要功能是证实连接到一台给定主机的一个用户,并且赋予该用户在一个数据库上select、insert、update和delete的权限。附加的功能包括有一个匿名的用户和对于MySQL特定的功能例如LOAD DATA INFILE进行授权及管理操作的能力。

2)与MySQL服务器连接当你想要存取一个MySQL服务器时,MySQL客户程序一般要求你指定连接参数:你想要联接的主机、你的用户名和你的口令

select、insert、update和delete权限允许你在一个数据库现有的表上实施操作。

3)通过执行mysqladmin管理MySQL服务器。

4)MySQL通过调用函数进行数据库和表的创建和其它过程。

5)通过SELECT等SQL语句对数据库进行操作。

6)编写创建数据库的SQL文件.有两种方法:一,你可以直接在mysql提示符状态下输入SQL语句,但是,对于创建完整的数据库,我们最好用于创建数据库的所有SQL语句放入一个.sq文件中.然后使用重定向,让mysql从文件中读取SQL语句,一次性创建完整的数据库。

4.3 CGI

CGI代表通用网关接口(Common Gateway Interface)。本质上,CGI是运行在服务器上的程序。它可以用任何语言编写-只要能够在你的服务器上运行.组成Cgi程序的是两部分,一部分是html页面,就是用户看到的东西。另一部分则是运行在服务器上的程序。

4.3.1 常用的两种方法

get和post GET当使用这种方法时,CGI程序从环境变量QUERY_STRING获取数据。QUERY_STRING被称为环境变量,就是这种环境变量把客户端的数据传给服务器。为了解释和执行程序,CGI必须要分析(处理)此字符串。

当你想从服务器获得数据并且不改变服务器上的数据时,你应该选用GET。但如果你的字符串长度超过了一定长度,那么还是选用POST方法,使用POST方法时,WEB服务器通过stdin(标准输入),向CGI程序传送数据。服务器在数据的最后没有使用EOF字符标记,因此程序为了正确的读取stdin,必须使用CONTENT_LENGTH。当你发送的数据将改变,Web服务器端的数据或者你想给CGI程序传送的数据超过了1024字节,这是url的极限长度,你应该使用post方法。

4.3.2 基本调试环境的建立

选择win95&winnt的Server软件、C&C++或PHP语言、安装测试,这样就完成了。然后是编写模块和调用。通过编写CGI,实现对服务器的管理和站点的日常维护。

5 网站的发布

网站建成后就可以进行发布了,可通过INTERNET发布。

6 网站的维护

网站上网运行不是很困难的,后期的网站维护工作是大量而麻烦的,该网站的目标单一,只提供资源下载,所以维护工作不十分庞杂,网站由用户自己维护。该网站采用严谨的语言程序设计,尽量避免出现安全问题。但是,由于各方面的原因和漏洞,网站的安全受到威胁是可能的,这要求在后期维护中要不断发现问题、解决问题,把隐患降到最低。

7 总结

该网站适于个人、单位、企业等,可以用于展示个人才华,宣传企业形象,进行商业活动。虽然该网站具备一定的功能,但是,这个网站还属于免费提供资源的,提供的资源也很有限,功能还可以进一步增强和完善。随着计算机网络的不断发展和编程技术的进步,网站的发展是不可限量的。

参考文献

[1]PHP中文参考手册[Z].

[2]MySQL中文参考手册[Z].

PHP设计留言本 篇3

关键词:会议论文投稿,PHP框架,MVC,国际化

随着网络技术的深入发展,通过互联网在线完成论文的投稿、审稿工作已成趋势。设计了一种基于PHP框架的论文在线投稿、审稿,论文在线管理且支持多语言的投稿系统,系统采用基于PHP的开源框架Codeigniter和开源前端页面框架Bootstrap。Codeigniter框架采用MVC模式开发,程序结构逻辑清晰明了,系统易于扩展。Bootstrap是Twitter公司开源的一款前端框架,具有良好的跨浏览器兼容性。

1基本功能与关键技术

1. 1基本功能

如图1所示,系统主要由普通用户、管理员、评审、 内容管理模块4部分组成,每个模块具有不同的功能和操作权限: ( 1) 普通用户模块。实现用户在线注册、 登录,论文投稿与编辑、稿件、版权表的上传等功能。 ( 2) 管理员模块。会议主席具有所有操作权限,能够对会议参数、系统状态设置,进行论文管理、编辑、搜索、论文统计、评审分配、论文导出等操作。( 3) 评审模块。评委根据管理员分配的注册码注册,登录后,可以评审分配给自己的论文,在论文评审期间,可以修改评审意见。( 4) 网站管理模块。本模块主要实现会议网站的内容管理,能够发布、编辑会议新闻和通知,让参会者能够及时了解会议信息。

1. 2关键技术

在分析系统的需求与功能之后,考虑开发效率和成本,系统采用开源PHP框架Codeigniter作为编程语言,前端框架Bootstrap作为页面效果渲染,MySQL作为数据存储。

( 1) Codeigniter框架。是一款轻型性能良好的MVC框架,支持多种数据库( MySQL,SQLite,MSSQL等) ,开发文档丰富,社区支持完善,对快速发送具有较大帮助。框架本身带有强大的类库,扩展支持良好, 能够方便地开发需要的功能。同时,它使用了成熟的MVC模型,降低了后台开发和前端开发人员的沟通成本。

( 2) Bootstrap。是一个简单灵活可用于创建流行的用户界面和交互接口的HTML,CSS,JavaScript工具集。基于HTML5、CSS3的Bootstrap,具有多种特性: 友好的学习曲线、卓越的兼容性、响应式设计、12列格网、样式向导文档、自定义jQuery插件、完整的类库等。与流行的jQuery UI相比,Bootstrap更小巧、模块更加独立、跨浏览器适用性更强。

( 3) MySQL。中、小型关系型数据库管理系统,软件体积小、速度快、总体学习成本低,尤源码开放,性能卓越,因此被大多数Web站点所采用。它支持MyISAM, InnoDB,Memory等多种存储引擎,各具优点[1]。

( 4) LESS( Dynamic Stylesheet Language) 。LESS将CSS赋予了动态语言的特性,例如变量,继承,运算和函数。LESS即可以在客户端( Chrome,Safari,Firefox) 运行,又可以在服务器端( Node. js and Rhino) 运行。

2系统设计实现

2. 1系统数据表

根据系统设计要求,单个用户可以上传多篇论文, 单篇论文可以具有多个论文主题,单篇论文可由多个评委评审,单篇论文具有多个作者等复杂的m∶ n关系,根据数据库第三范式设计规范,逐一设计各个数据表。系统共19张数据表,关键表用途如表1所示,关键数据表关系图如图2所示。

2. 2系统模块

系统采用MVC模式[2]开发,由控制器层( Controller) 实现程序逻辑处理,路由分发; 模型层( Model) 负责与数据库交互,一个模块一般只负责维护一张数据表,尽量降低耦合关系。在同一个控制器中可以初始化多个数据库模型即可对多个数据表操作; 视图层( View) 主要负责页面输出显示和渲染。根据前述功能,系统主要实现3个功能控制器文件: 管理员控制器chair. php, 用户控制器author. php,评委控制器review. php[3 -6]。

( 1) 管理员控制器( chair. php) 。管理员登录后可以设置会议参数:本次会议的议题,单用户最大论文投稿数量,默认界面语言,邮件通知,文件上传格式等;设置系统状态:是否允许用户注册,评审注册,论文初稿、终稿、版权表的上传等;论文管理:查看已投稿论文基本信息,按条件搜索、编辑论文,撤稿等;分配评审:根据会议安排给论文分配评审人,还支持手动导入论文分配方案;论文数据导出:管理员可以根据需要,选择需要导出的论文基本信息,论文联系人,论文的评审意见等;论文统计分为按主题统计和按国家统计,按主题统计可以以拼图的方式直观地显示各个主题下的论文数量;按国家统计可以查看某个国家或地区的论文投稿数量;评审管理:在线分配论文给评审专家,评审专家登录后可以查看到分配的论文并进行在线评审。为符合不同的会议论文评审标准,系统具有自定义评审表单功能,管理员在后台即可对评审表单进行修改,使之满足论文评审要求。管理员后台如图3所示[7-9]。

( 2) 普通用户控制器( author. php) 。普通用户注册,登录系统后,可进行论文投稿和论文管理,个人信息修改,文件上传,帐号信息管理等操作。系统支持多种语言环境,用户可以根据需要改变界面显示语言。 同时用户提交、更新论文时,均可接到邮件通知,防止被人非法操作。普通用户操作界面如图4所示。

( 3) 评委审核控制器( review. php) 。评委通过帐号登录后,可在后台查看到会议管理员分配给自己的待评审论文列表,评审专家可以下载论文到本地详细阅读,然后在线根据评审标准提交评审意见。论文评审界面如图5所示。

( 4) 网站内容管理。网站内容管理模块用于发布会议的新闻、通知,与会者通过访问前台页面即可获取会议的各种关键信息。本模块包括新闻管理,权限管理,系统参数设置等。网站内容管理界面如图6所示。

3结束语

现有的EasyChair会议投稿系统需要会议管理员注册,提交会议申请,在对方指定的网站中才能使用。论文数据的导出需要额外付费,同时,该投稿系统的界面语言仅支持英语,不支持在线评审论文,不具有介绍会议的会议网站。同时系统程序运行在服务商一端,系统可控性低。不支持绑定独立域名,不满足部分会议需求。

系统采用PHP框架技术开发,具有较强扩展性和稳定性。程序可独立安装,系统管理员具有完全的操作权限,不仅数据信息支持多语言存储,系统界面也进行了国际化处理,用户能根据自己喜好选择熟悉的语言版本。在线评审模块方面,会议管理员可自定义评审表单,满足不同的会议的评审标准。系统自带的网站管理系统能够开发会议独立网站,用于进行会议的前期宣传、新闻通知的发布,支持独立域名绑定,这个功能也是EasyChair不具有的。

PHP设计留言本 篇4

随着计算机网络技术的快速发展, Web应用系统以其友好的用户界面, 较低的维护和升级成本, 良好的扩展性, 较高的信息共享度等优势, 迅速成为当今企业级应用的主要形式。在Web应用系统中经常需要向用户提供基于Web的文件上传功能, 如:网络硬盘服务系统, 邮件服务系统, 网络电子像册, 网络视频发布系统, 电子图书馆资料管理系统, 局域网文件交换系统。作为web系统开发的主流技术之一, PHP是一种跨平台的服务器端的嵌入式脚本语言。在这众多的应用中, 如何在PHP实现大文件高效上传是一个需要解决的问题。

湛江师范学院网络与教育技术中心在实现个人网络文件管理系统的过程中, 专门对这一问题进行了研究, 提出了基于PHP大文件上传的解决方案, 并应用到学校个人相册系统和教学管理系统中, 取得了良好的效果。

2、PHP文件上传的传输方式

PHP中实现文件的上传可以采用两种方式即采用HTTP协议和FTP协议实现, 二者在传输的原理上存在很大的差异。

HTTP是指超文本传输协议, 是互联网上应用最为广泛的一种网络传输协议。HTTP是一种基于请求/响应模式的协议, 客户机与服务器建立连接后, 发送一个请求给服务器, 随后附有MIME信息[1]。而基于FORM表单的文件上传, 文件的信息和内容正是封装在MIME信息内发送到服务器端的。[2]

FTP是指文件传输协议, 主要用来在网络上传输文件。这种方式传输稳定、系统资源占用率低、对文件大小没有限制, 服务器的部署比较复杂, 需要使用特定的软件来完成上传和下载, 而且功能单一、权限设置复杂, 一般用于专业的文件传输, 对于普通用户来说实用性不高。[3]

Http协议和Ftp协议传输的比较:[4]

1) 用HTTP协议上传, 更适合web编程的方便性;HTTP使用浏览器作为客户端软件, 界面友好, 操作简单, 可以通过WEB表单机制实现文件的上传。因此HTTP的文件上传可以集成在web页面中, 易用性、实用性较强。

2) 用FTP协议上传文件大于1M的文件速度比HTTP快。文件越大, 上传的速度就比HTTP上传的速度快数倍。

3、目前PHP大文件上传的实现方式

3.1 服务器组件上载方式:

该方法以PECL扩展模块uploadprogress为代表。uploadprogress已经正式放入PECL了, 早期叫做"Upload Progress Meter"。通过AJAX方式获取文件信息, 然后在浏览器中显示上传进度条的。这个扩展只能用于PHP 5.2或以上版本。该扩展模块的优点是运行稳定, 功能强大, 对浏览器没有任何要求。其缺点就是它的开发是基于linux, 在windows操作系统下很不稳定和需要在服务器上安装扩展模块。

3.2 浏览器组件上载方式:

该方法以SWFUpload、纵横http文件上传组件为代表。该方法的优点是对服务器无要求, 不需要在服务器上安装组件, 并且能提供文件上载所需要的各种功能:上载大文件、限制上载文件的大小、上载多个文件、显示上载进度条。其缺点也比较明显, 需要注册浏览器组件 (在客户端) 。

利用第三方所开发的组件, 可以减少WEB应用系统开发工作量, 缩短开发周期, 实现简单, 无上传文件大小限制, 稳定性、上传效率等方面都非常不错, 而且界面友好, 普遍都提供了上传进度指示等附加功能。但存在的问题是:使用第三方组件可能会带来无法预料的安全性和可靠性问题;但绝大多数组件只适合于上传小文件 (30MB以下) [5], 当文件较大时大部分组件上传速度慢;优秀的组件一般都为商业软件, 需要付费才能使用。

4、PHP大文件上传的设计与实现

综合上述分析, 在学校个人网络文件管理系统开发中, 设计了利用上传表单和PHP语言的FTP函数来实现大文件上载。

4.1 系统环境及设置

服务器软件环境:Linux OS、Apache2.4、MySQL4.1、PHP5.2、VSFTP。软件的具体安装在此不再介绍。为了能支持上传大文件, php.ini配置文件必须修改如下:[6]

upload_max_filesize=500m;即允许上传文件大小的最大值。

post_max_size=500m;指通过表单POST给PHP的所能接收的最大值

max_input_time=600;每个PHP页面接收数据所需的最大时间

memory_limit=32m;每个PHP页面所需的最大内存

4.2 功能设计与实现

4.2.1 用户FTP帐号的安全

登录远程FTP服务器有两种方式, 一种是注册用户登录, 另一种是以匿名方式登录。出于安全的考虑, 在系统中采用了第一种方式。利用网页表单收集用户填写的资料存储到MySQL数据库内, 同时以该用户的注册名创建一个FTP上传账号, 密码由系统以密钥形式自动生成。MySQL数据库的用户表 (USER) 见表1。用户认证登录管理系统时, 通过select语句获取FTP帐号和密码, 并利用Cookie存放, 以供连接和登录FTP服务器时使用。

4.2.1 FTP函数上传

第一步:确信你拥有连接/上传到FTP服务器的权限。PHP的FTP函数需要客户端-服务器连接, 所以在文件上传之前需要登录目标服务器。

第二步:创建上传表单。在系统中上传文件的大小受PHP INI配置和用户所允许上传的上限影响。在文件上传之前先在本地进行文件大小、类型检测, 如果符合要求, 则上传之, 否则重新选择上传文件。

第三步:创建PHP上传处理程序。一旦表单被提交给了Web服务器, 下一步是使用PHP的FTP函数按照用户提供的访问信任书把它传输到目标服务器上。文件上传成功与否还与网络操作的最大可执行时间有密切联系。因此系统根据上传的文件大小来设定最大可执行时间, 这样可以避免出现:设置过小时, 因为超时而导致上传失败;设置过大, 当上传早已失败时, 用户还要经过长时间等待后才返回到表单。下面就是完成上述功能的部分代码。

5、结束语

本文提出的解决方案是基于PHP, 能够在不需要第三方组件的支持下, 以FTP传输协议传送文件, 高效地实现基于Web的大文件上传, 具有跨平台性和可扩展性, 易于在不同的文件管理系统中移植。简单直观的Web界面方便了用户的操作和使用。

参考文献

[1].IETF.Hypertext Transfer Protocol--HTTP/1.1.[EB/OL].[1995-08].http://www.ietf.org/rfc/rfc1867.txt?number=1867.

[2].IETF.Form-based File Upload in HTML[EB/OL].[1995-08].http://www.ietf.org/rfc/rfc2616.txt?number=2616.

[3].李颖云, 张克.基于asp.net的文件上传和下载[J].电脑知识与技术, 2007, 6:1549-1550.

[4].孙占东, 姜加虎.用ASP实现无组件的文件上传[J].计算机应用, 2003, 23[9]:136-138.

[5].林天华, 马素霞, 赵霞.基于Web的大文件上传技术研究[J].科技导报, 2007, 25[16]:30-33.

上一篇:技师学校下一篇:有效配合