不用数据库的多用户文件自由上传投票系统(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的access操作类
Apr 09 PHP
PHP调用Linux的命令行执行文件压缩命令
Jan 27 PHP
解析thinkphp中的导入文件标签
Jun 20 PHP
PHP函数microtime()用法与说明
Dec 04 PHP
php数组去重复数据示例
Feb 25 PHP
PHP也能干大事之PHP中的编码解码详解
Apr 20 PHP
php生成年月日下载列表的方法
Apr 24 PHP
详谈PHP编码转换问题
Jul 28 PHP
php微信公众号开发(2)百度BAE搭建和数据库使用
Dec 15 PHP
ThinkPHP框架实现的邮箱激活功能示例
Jun 15 PHP
PHP 代码简洁之道(小结)
Oct 16 PHP
PHP重载基础知识回顾
Sep 10 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
跟我学Laravel之请求(Request)的生命周期
2014/10/15 PHP
PHP登录验证码的实现与使用方法
2016/07/07 PHP
Javascript模块模式分析
2008/05/16 Javascript
jQuery 通过事件委派一次绑定多种事件,以减少事件冗余
2010/06/30 Javascript
使用Jquery打造最佳用户体验的登录页面的实现代码
2011/07/08 Javascript
JS 控制小数位数的实现代码
2011/08/02 Javascript
uploadify在Firefox下丢失session问题的解决方法
2013/08/07 Javascript
javascript获取元素CSS样式代码示例
2013/11/28 Javascript
jQuery中nextUntil()方法用法实例
2015/01/07 Javascript
AngularJS删除路由中的#符号的方法
2016/09/20 Javascript
微信小程序模板之分页滑动栏
2017/02/10 Javascript
canvas雪花效果核心代码分享
2017/02/19 Javascript
Vue.js中数据绑定的语法教程
2017/06/02 Javascript
Vue组件中prop属性使用说明实例代码详解
2018/05/31 Javascript
基于layui数据表格以及传数据的方式
2018/08/19 Javascript
vue如何解决循环引用组件报错的问题
2018/09/22 Javascript
Node.js 的 GC 机制详解
2019/06/03 Javascript
vue使用高德地图根据坐标定位点的实现代码
2019/08/22 Javascript
如何利用JavaScript编写更好的条件语句详解
2020/08/10 Javascript
[47:42]完美世界DOTA2联赛PWL S2 GXR vs Ink 第一场 11.19
2020/11/20 DOTA
pip安装Python库时遇到的问题及解决方法
2017/11/23 Python
Python文本处理之按行处理大文件的方法
2018/04/09 Python
详解PyCharm+QTDesigner+PyUIC使用教程
2019/06/13 Python
浅谈PySpark SQL 相关知识介绍
2019/06/14 Python
python 猴子补丁(monkey patch)
2019/06/26 Python
深入了解Python 变量作用域
2020/07/24 Python
美国滑雪和滑雪板商店:Buckman
2018/03/03 全球购物
List, Set, Map是否继承自Collection接口?
2016/05/16 面试题
木马的传播途径主要有哪些
2016/04/08 面试题
介绍JAVA 中的Collection FrameWork(及如何写自己的数据结构)
2014/10/31 面试题
建筑设计所实习生自我鉴定
2013/09/25 职场文书
节能减排倡议书
2014/04/15 职场文书
2014国庆节餐厅促销活动策划方案
2014/09/16 职场文书
财会专业大学生求职信
2014/09/26 职场文书
客户答谢会致辞
2015/01/20 职场文书
会计专业自荐信范文
2019/05/22 职场文书