不用数据库的多用户文件自由上传投票系统(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 相关文章推荐
利用 window_onload 实现select默认选择
Oct 09 PHP
php 分页原理详解
Aug 21 PHP
PHP数组操作汇总 php数组的使用技巧
Jul 17 PHP
简单的cookie计数器实现源码
Jun 07 PHP
php数组删除元素示例
Mar 21 PHP
54个提高PHP程序运行效率的方法
Jul 19 PHP
PHP记录页面停留时间的方法
Mar 30 PHP
PHP上传Excel文件导入数据到MySQL数据库示例
Oct 25 PHP
微信小程序 消息推送php服务器验证实例详解
Mar 30 PHP
php使用 readfile() 函数设置文件大小大小的方法
Aug 11 PHP
php通过各种函数判断0和空
Jul 04 PHP
windows环境下使用Composer安装ThinkPHP5
May 18 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写的小东西
2006/12/06 PHP
PHP面向对象编程快速入门
2006/12/14 PHP
php _autoload自动加载类与机制分析
2012/02/10 PHP
php的ajax简单实例
2014/02/27 PHP
php去掉文件前几行的方法
2015/07/29 PHP
WordPress中用于获取文章信息以及分类链接的函数用法
2015/12/18 PHP
浅谈PHP拦截器之__set()与__get()的理解与使用方法
2016/10/18 PHP
jquery中的mouseleave和mouseout的区别 模仿下拉框效果
2012/02/07 Javascript
jquery如何改变html标签的样式(两种实现方法)
2013/01/16 Javascript
jquery教程限制文本框只能输入数字和小数点示例分享
2014/01/13 Javascript
JavaScript中的对象序列化介绍
2014/12/30 Javascript
jQuery实现购物车表单自动结算效果实例
2015/08/10 Javascript
学习使用bootstrap基本控件(table、form、button)
2016/04/12 Javascript
Bootstrap 组件之按钮(二)
2016/05/11 Javascript
JS函数的定义与调用方法推荐
2016/05/12 Javascript
JavaScript两个变量交换值的实现方法
2017/03/01 Javascript
layer弹出层框架alert与msg详解
2017/03/14 Javascript
react学习笔记之state以及setState的使用
2017/12/07 Javascript
微信小程序实现image组件图片自适应宽度比例显示的方法
2018/01/16 Javascript
解决Vue.js父组件$on无法监听子组件$emit触发事件的问题
2018/09/12 Javascript
JS使用Dijkstra算法求解最短路径
2019/01/17 Javascript
vue element 中的table动态渲染实现(动态表头)
2019/11/21 Javascript
Python安装Numpy和matplotlib的方法(推荐)
2017/11/02 Python
django允许外部访问的实例讲解
2018/05/14 Python
解决tensorflow/keras时出现数组维度不匹配问题
2020/06/29 Python
佛罗里达州印第安河新鲜水果:Hale Groves
2017/02/20 全球购物
.NET面试问题集
2015/12/08 面试题
法学专业应届生求职信
2013/10/16 职场文书
九年级政治教学反思
2014/02/06 职场文书
护林防火标语
2014/06/27 职场文书
公务员群众路线专题民主生活会发言材料
2014/09/17 职场文书
2014年幼儿园老师工作总结
2014/12/05 职场文书
2015大学生党员自我评价范文
2015/03/03 职场文书
美术教师求职信范文
2015/03/20 职场文书
个人工作违纪检讨书
2015/05/05 职场文书
婚宴主持词
2015/06/30 职场文书