不用数据库的多用户文件自由上传投票系统(3)


Posted in PHP onOctober 09, 2006

这是本系统的第四个文件.upload.php主要负责,文件名的校验
,上传文件和文件地址的归档

<html>
<head><title>文件上传</title>
<body><div style="width:750"><center>
<?php
//上传的栏目$col,$upfile上传的文件,$writer作者,$intro简介

$writer=substr(htmlspecialchars($writer),0,20);
$intro=substr(htmlspecialchars($intro),0,100);

$maxsize=512000*2;//最大的文件长度
$pathtemp=explode("/",$HTTP_ENV_VARS["PATH_INFO"]);
$pathtemp[sizeof($pathtemp)-1]="";
$cgiroot="http://".$HTTP_HOST.implode("/",$pathtemp);//主机加当前目录

//$cgiroot="http://eccct.51.net/cgi-bin/";
$uploadto="../uploadfile/".$col."/";//上传到的子目录

$goback="<br><br><br><br><center>系统将在3秒后返回....</center><script>setTimeout('location.href="view.php?col=".$col.""',3000)</script>";

set_time_limit(300);//可持续五分钟

//if(!is_dir($uploadto)) mkdir($uploadto,0755);

if($upfile_size>$maxsize)
die("<h1><font color=red>对不起,您要上传的文件太大了,超过了1MB</font></h1>".$goback);

$filename=$upfile_name;
$i=0;
while(file_exists($uploadto.$filename)){
$i++;

$filesp=explode('.',trim($upfile_name));
//echo $filesp[sizeof($filesp)-1];
//echo $filesp[sizeof($filesp)-1]!="zip";
//echo $filesp[sizeof($filesp)-1]!="rar";

if((trim($filesp[sizeof($filesp)-1])!="zip") && (trim($filesp[sizeof($filesp)-1])!="rar")){

die("<h1><font color=red>上传文件的后缀名必须是zip或rar(小写)</font></h1>".$goback);

}

$filename=$filesp[0].$i.".".$filesp[1];

}

if ($i>0)
echo ("<font color=red>对不起,您要上传的文件名已经存在了,<br>系统自动将其更名为".$filename."</font>");

//检查合理性结束

if(!copy($upfile,$uploadto.$filename)) die("<h1><font color=red>系统出现错误03,请将文件重传<br></font></h1>".$goback);

//写文件列表
$fileurl=$uploadto.$filename;//文件url
$flists=$uploadto.$col.".lst";//文件列表位置

for($i=0;$i<100 && !file_exists($flists);$i++);
if($i==99) {
unlink($uploadto.$filename);
die("系统出错00".$goback);
}

copy($flists,$flists.".bak");
if(!$fp=fopen($flists,"r")){
unlink($uploadto.$filename);
die("出错01".$goback);
}
$filerc=explode(">",fread($fp,filesize($flists)));//上传的档案资料
fclose($fp);

unlink($flists);

$firstrec=explode("<",$filerc[0]);

if(!$firstrec[0]) $id=1;
else $id=$firstrec[0]+1;

$oldinfo=implode(">",$filerc);

$newinfo=$id."<".$writer."<".$filename."<0<".$intro."<".$upfile_size."<0>".$oldinfo;
//编号<作者<文件位置<投票计数<简介<文件大小<文件下载次数

if(!$fp=fopen($flists,"w")){
unlink($uploadto.$filename);
copy($flists.".bak",$flists);
die("出错02".$goback);
}

fwrite($fp,trim($newinfo));

fclose($fp);

//写文件列表结束

//文件传送

echo "<h1>传送成功</h1>";

echo "文件在<a href=".$fileurl.">".$cgiroot.$fileurl."</a>.$goback";
//文件传送成功

?>
</center>
</div>
</body>
</html>

这是本文的最后一篇,主要介绍如何使用系统,让我们用个事例来说明:

例如我们要做flash作品上传投票,那我们只需要在../uploadfile/(相对系统php文件所在位置)子目录下建一个flash子目录,并在其中建立下列文件:flash.if(记录显示时出现的标题),flash.ip(投票ip记录),flash.ipd(下载ip记录),flash.lst(下载文件信息记录).然后使用view.php?col=flash就可使用系统了,如果要新增栏目/用户php作品上传,只需在../uploadfile/下另建子目录php,和相应文件,并使用view.php?col=php就可使用了 

PHP 相关文章推荐
PHP setTime 设置当前时间的代码
Aug 27 PHP
zend Framework中的Layout(模块化得布局)详解
Jun 28 PHP
php利用单例模式实现日志处理类库
Feb 10 PHP
PHP批量上传图片的具体实现方法介绍.
Feb 26 PHP
ThinkPHP学习笔记(一)ThinkPHP部署
Jun 22 PHP
php类的扩展和继承用法实例
Jun 20 PHP
PHP基本语法实例总结
Sep 09 PHP
PHP命名空间namespace的定义方法详解
Mar 29 PHP
PHP数据库编程之MySQL优化策略概述
Aug 16 PHP
PHP中如何使用Redis接管文件存储Session详解
Nov 28 PHP
PHP convert_cyr_string()函数讲解
Feb 13 PHP
Laravel5.1 框架控制器基础用法实例分析
Jan 04 PHP
用PHP+MySql编写聊天室
Oct 09 #PHP
如何开发一个虚拟域名系统
Oct 09 #PHP
PHP中对数据库操作的封装
Oct 09 #PHP
用DBSQL类加快开发MySQL数据库程序的速度
Oct 09 #PHP
一个简洁的多级别论坛
Oct 09 #PHP
用ODBC的分页显示
Oct 09 #PHP
为查询结果建立向后/向前按钮
Oct 09 #PHP
You might like
Php Mssql操作简单封装支持存储过程
2009/12/11 PHP
不使用php api函数实现数组的交换排序示例
2014/04/13 PHP
php 如何获取文件的后缀名
2016/06/05 PHP
PHP中ltrim()函数的用法与实例讲解
2019/03/28 PHP
jquery动态加载图片数据练习代码
2011/08/04 Javascript
解析javascript 浏览器关闭事件
2013/07/08 Javascript
jQuery实现列表自动循环滚动鼠标悬停时停止滚动
2013/09/06 Javascript
全面理解面向对象的 JavaScript(来自ibm)
2013/11/10 Javascript
根据身份证号自动输出相关信息(籍贯,出身日期,性别)
2013/11/15 Javascript
提取jquery的ready()方法单独使用示例
2014/03/25 Javascript
node.js中的fs.chownSync方法使用说明
2014/12/16 Javascript
JavaScript设计模式之工厂方法模式介绍
2014/12/28 Javascript
整理AngularJS中的一些常用指令
2015/06/16 Javascript
JavaScript返回上一页的三种方法及区别介绍
2015/07/04 Javascript
JS前端开发判断是否是手机端并跳转操作(小结)
2017/02/05 Javascript
js+css实现打字效果
2020/06/24 Javascript
webpack file-loader和url-loader的区别
2019/01/15 Javascript
详解webpack4.x之搭建前端开发环境
2019/03/28 Javascript
Javascript执行上下文顺序的深入讲解
2020/11/04 Javascript
[56:14]Fnatic vs OG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[58:32]EG vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python3.x对JSON的一些操作示例
2017/09/01 Python
Python人工智能之路 之PyAudio 实现录音 自动化交互实现问答
2019/08/13 Python
Pandas中DataFrame交换列顺序的方法实现
2020/12/14 Python
世界排名第一的万圣节服装店:Spirit Halloween
2018/10/16 全球购物
Exoticca英国:以最优惠的价格提供豪华异国情调旅行
2018/10/18 全球购物
英国健身仓库:Bodybuilding Warehouse
2019/03/06 全球购物
美国名牌香水折扣网站:Hottperfume
2021/02/10 全球购物
小松树教学反思
2014/02/11 职场文书
学生打架检讨书
2014/10/20 职场文书
2015年挂职锻炼工作总结
2014/12/12 职场文书
优秀员工推荐材料
2014/12/20 职场文书
2015年高一班主任工作总结
2015/05/13 职场文书
2015年纪委工作总结
2015/05/13 职场文书
学生党支部工作总结2015
2015/05/26 职场文书
学校学习型党组织建设心得体会
2019/06/21 职场文书