不用数据库的多用户文件自由上传投票系统(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基础学习笔记
Mar 18 PHP
PHP 中文乱码解决办法总结分析
Jul 30 PHP
phpmyadmin 常用选项设置详解版
Mar 07 PHP
php验证session无效的解决方法
Nov 04 PHP
分享php邮件管理器源码
Jan 06 PHP
php处理复杂xml数据示例
Jul 11 PHP
php操作xml并将其插入数据库的实现方法
Sep 08 PHP
php+ajax实现异步上传文件或图片功能
Jul 18 PHP
PHP设计模式之原型设计模式原理与用法分析
Apr 25 PHP
ThinkPHP5.1表单令牌Token失效问题的解决
Mar 22 PHP
PHP goto语句用法实例
Aug 06 PHP
PHP数据源架构模式之表入口模式实例分析
Jan 23 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
解决file_get_contents无法请求https连接的方法
2013/12/17 PHP
codeigniter数据库操作函数汇总
2014/06/12 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十一)
2014/06/25 PHP
PHP中使用循环实现的金字塔图形
2014/11/08 PHP
Linux平台php命令行程序处理管道数据的方法
2016/11/10 PHP
php实现基于PDO的预处理示例
2017/03/28 PHP
PHP chr()函数讲解
2019/02/11 PHP
Firefox getBoxObjectFor getBoundingClientRect联系
2008/10/26 Javascript
JavaScript 继承详解(三)
2009/07/13 Javascript
js判断IE6/IE7/FF的代码[XMLHttpRequest]
2011/02/16 Javascript
IE下使用cloneNode注意事项分享
2012/11/22 Javascript
javascript使用onclick事件改变选中行的颜色
2013/12/30 Javascript
2014年50个程序员最适用的免费JQuery插件
2014/12/15 Javascript
javascript之Array 数组对象详解
2016/06/07 Javascript
Bootstrap学习笔记 轮播(Carousel)插件
2017/03/21 Javascript
JavaScript实现的拼图算法分析
2019/02/13 Javascript
详解ES6中的Map与Set集合
2019/03/22 Javascript
Vue render函数实战之实现tabs选项卡组件
2019/04/22 Javascript
Python采集腾讯新闻实例
2014/07/10 Python
Python并发之多进程的方法实例代码
2018/08/15 Python
Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围
2019/06/25 Python
Python考拉兹猜想输出序列代码实践
2019/07/05 Python
python连接打印机实现打印文档、图片、pdf文件等功能
2020/02/07 Python
在Python 的线程中运行协程的方法
2020/02/24 Python
利用CSS3的定位页面元素
2009/08/29 HTML / CSS
比利时的在线灯具店:Lampen24.be
2019/07/01 全球购物
迪奥美国官网:Dior美国
2019/12/07 全球购物
求职信内容考虑哪几点
2013/10/05 职场文书
找工作求职信
2014/07/07 职场文书
党员教师四风问题对照检查材料
2014/09/26 职场文书
企业法人代表证明书
2014/09/27 职场文书
考教师资格证不要错过的4个最佳时机
2019/07/17 职场文书
话题作文之呼唤
2019/12/18 职场文书
pytorch中F.avg_pool1d()和F.avg_pool2d()的使用操作
2021/05/22 Python
Java Spring 控制反转(IOC)容器详解
2021/10/05 Java/Android
Redis实现订单过期删除的方法步骤
2022/06/05 Redis