不用数据库的多用户文件自由上传投票系统(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 开源框架22个简单简介
Aug 24 PHP
PHP压缩html网页代码(清除空格,换行符,制表符,注释标记)
Apr 02 PHP
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
Aug 18 PHP
thinkphp3.2.2前后台公用类架构问题分析
Nov 25 PHP
PHP+MySQL删除操作实例
Jan 21 PHP
初识laravel5
Mar 02 PHP
php链表用法实例分析
Jul 09 PHP
Thinkphp自定义代码生成工具及用法说明(附下载地址)
May 27 PHP
php函数传值的引用传递注意事项分析
Jun 25 PHP
DEDE实现转跳属性文档在模板上调用出转跳地址
Nov 04 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
Mar 26 PHP
php如何获取Http请求
Apr 30 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中register_globals参数为OFF和ON的区别(register_globals 使用详解)
2012/02/05 PHP
php实现比较全的数据库操作类
2015/06/18 PHP
php打造智能化的柱状图程序,用于报表等
2015/06/19 PHP
PHP中COOKIES使用示例
2015/07/26 PHP
PHP实现合并discuz用户
2015/08/05 PHP
php实现文件管理与基础功能操作
2017/03/21 PHP
IIS 7.5 asp Session超时时间设置方法
2017/04/17 PHP
基于jQuery制作迷你背词汇工具
2010/07/27 Javascript
jquery调用asp.net 页面后台的实现代码
2011/04/27 Javascript
jQuery-Easyui 1.2 实现多层菜单效果的代码
2012/01/13 Javascript
浅谈JavaScript Date日期和时间对象
2014/12/29 Javascript
jQuery晃动层特效实现方法
2015/03/09 Javascript
js由下向上不断上升冒气泡效果实例
2015/05/07 Javascript
jQuery控制frames及frame页面JS的方法
2016/03/08 Javascript
jquery 遍历数组 each 方法详解
2016/05/25 Javascript
利用Blob进行文件上传的完整步骤
2018/08/02 Javascript
微信小程序滑动选择器的实现代码
2018/08/10 Javascript
vue自定义全局共用函数详解
2018/09/18 Javascript
微信实现自动跳转到用其他浏览器打开指定APP下载
2019/02/15 Javascript
使用vue-cli3+typescript的项目模板创建工程的教程
2020/02/28 Javascript
js实现动态时钟
2020/03/12 Javascript
完美解决vue 中多个echarts图表自适应的问题
2020/07/19 Javascript
[01:32]TI珍贵瞬间系列(一)
2020/08/26 DOTA
python使用xlrd实现检索excel中某列含有指定字符串记录的方法
2015/05/09 Python
Pythony运维入门之Socket网络编程详解
2019/04/15 Python
Python中filter与lambda的结合使用详解
2019/12/24 Python
使用 tf.nn.dynamic_rnn 展开时间维度方式
2020/01/21 Python
高校毕业生自我鉴定
2013/10/27 职场文书
体育运动会广播稿
2014/10/05 职场文书
医生个人年终总结
2015/02/28 职场文书
工作会议通知
2015/04/15 职场文书
《司马光》教学反思
2016/02/22 职场文书
2016大学先进团支部事迹材料
2016/03/01 职场文书
自制短波长线天线频率预选器 - 成功消除B2K之流的镜像
2021/04/22 无线电
redis实现排行榜功能
2021/05/24 Redis
Java的Object类的九种方法
2022/04/13 Java/Android