不用数据库的多用户文件自由上传投票系统(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 连接mysql连接被重置的解决方法
Feb 15 PHP
基于php常用正则表达式的整理汇总
Jun 08 PHP
一个不易被发现的PHP后门代码解析
Jul 05 PHP
php绘图之加载外部图片的方法
Jan 24 PHP
PHP常用处理静态操作类
Apr 03 PHP
php实现将Session写入数据库
Jul 26 PHP
PHP中overload与override的区别
Feb 13 PHP
PHP最常用的正则表达式
Feb 13 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
Sep 16 PHP
Laravel中的chunk组块结果集处理与注意问题
Aug 15 PHP
详解如何实现Laravel的服务容器的方法示例
Apr 15 PHP
PHP http请求超时问题解决方案
Nov 13 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 file_exists问题杂谈
2012/05/07 PHP
php array_merge函数使用需要注意的一个问题
2015/03/30 PHP
PHP 获取客户端 IP 地址的方法实例代码
2018/11/11 PHP
php的扩展写法总结
2019/05/14 PHP
JQuery Ajax 跨域访问的解决方案
2010/03/12 Javascript
THREE.JS入门教程(1)THREE.JS使用前了解
2013/01/24 Javascript
jquery网页元素拖拽插件效果及实现
2013/08/05 Javascript
jquery实现图片裁剪思路及实现
2013/08/16 Javascript
可自定义速度的js图片无缝滚动示例分享
2014/01/20 Javascript
兼容所有浏览器的js复制插件Zero使用介绍
2014/03/19 Javascript
JS获取客户端IP地址、MAC和主机名的7个方法汇总
2014/07/21 Javascript
bootstrap输入框组代码分享
2016/06/07 Javascript
Jquery ajax请求导出Excel表格的实现代码
2016/06/08 Javascript
BooStrap对导航条的改造实践小结
2016/09/21 Javascript
javaScript生成支持中文带logo的二维码(jquery.qrcode.js)
2017/01/03 Javascript
JSON 数据详解及实例代码分析
2017/01/20 Javascript
JavaScript实现弹出广告功能
2017/03/30 Javascript
解决vue中使用Axios调用接口时出现的ie数据处理问题
2018/08/13 Javascript
Node.js 路由的实现方法
2019/06/05 Javascript
Layui table field初始化加载时进行隐藏的方法
2019/09/19 Javascript
VUE.CLI4.0配置多页面入口的实现
2019/11/25 Javascript
微信小程序实现打卡签到页面
2020/09/21 Javascript
python操作摄像头截图实现远程监控的例子
2014/03/25 Python
Python中实现对list做减法操作介绍
2015/01/09 Python
python中利用h5py模块读取h5文件中的主键方法
2018/06/05 Python
Python+Dlib+Opencv实现人脸采集并表情判别功能的代码
2020/07/01 Python
canvas之万花筒效果的简单实现(推荐)
2016/08/16 HTML / CSS
服务中心夜班服务员岗位职责
2013/11/27 职场文书
优秀中学生事迹材料
2014/01/31 职场文书
仓库主管岗位职责
2014/03/02 职场文书
初中作文评语大全
2014/04/23 职场文书
企业文化标语大全
2014/06/10 职场文书
2014年高中班主任工作总结
2014/11/08 职场文书
写一个Python脚本下载哔哩哔哩舞蹈区的所有视频
2021/05/31 Python
微软PC Health Check电脑健康状况检查应用下载(Win11配置检测工具)
2021/06/26 数码科技
Python Flask实现进度条
2022/05/11 Python