不用数据库的多用户文件自由上传投票系统(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 相关文章推荐
JS与PHP向函数传递可变参数的区别实例代码
May 18 PHP
关于PHP的curl开启问题探讨
Apr 08 PHP
PHP缓存机制Output Control详解
Jul 14 PHP
php有效防止同一用户多次登录
Nov 19 PHP
Smarty变量用法详解
May 11 PHP
PHP封装的数据库保存session功能类
Jul 11 PHP
PHP请求远程地址设置超时时间的解决方法
Oct 29 PHP
浅谈socket同步和异步、阻塞和非阻塞、I/O模型
Dec 15 PHP
ThinkPHP框架表单验证操作方法
Jul 19 PHP
对于Laravel 5.5核心架构的深入理解
Feb 22 PHP
PHP的PDO大对象(LOBs)
Jan 27 PHP
php解决约瑟夫环算法实例分析
Sep 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利用腾讯ip分享计划获取地理位置示例分享
2014/01/20 PHP
微信网页授权(OAuth2.0) PHP 源码简单实现
2016/08/29 PHP
php分页原理 分页代码 分页类制作教程
2016/09/23 PHP
laravel框架中视图的基本使用方法分析
2019/11/23 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
VSCode+PHPstudy配置PHP开发环境的步骤详解
2020/08/20 PHP
jquery uploadify 在FF下无效的解决办法
2014/09/26 Javascript
JavaScript数组和循环详解
2015/04/27 Javascript
今天抽时间给大家整理jquery和ajax的相关知识
2015/11/17 Javascript
AngularJS进行性能调优的7个建议
2015/12/28 Javascript
AngularJS使用指令增强标准表单元素功能
2016/07/01 Javascript
KnockoutJS 3.X API 第四章之click绑定
2016/10/10 Javascript
网页瀑布流布局jQuery实现代码
2016/10/21 Javascript
浅谈MVC+EF easyui dataGrid 动态加载分页表格
2016/11/10 Javascript
基于LayUI分页和LayUI laypage分页的使用示例
2017/08/02 Javascript
vue实现在表格里,取每行的id的方法
2018/03/09 Javascript
Vue源码分析之Vue实例初始化详解
2019/08/25 Javascript
layui+jquery支持IE8的表格分页方法
2019/09/28 jQuery
vue.js this.$router.push获取不到params参数问题
2020/03/03 Javascript
如何修改Vue打包后文件的接口地址配置的方法
2020/04/22 Javascript
uniapp微信小程序实现一个页面多个倒计时
2020/11/01 Javascript
Python 变量类型及命名规则介绍
2013/06/08 Python
Python随机生成彩票号码的方法
2015/03/05 Python
Python中datetime模块参考手册
2017/01/13 Python
Python用Pillow(PIL)进行简单的图像操作方法
2017/07/07 Python
遗传算法python版
2018/03/19 Python
win10 64bit下python NLTK安装教程
2018/09/19 Python
Python 实现文件读写、坐标寻址、查找替换功能
2019/09/11 Python
python中自带的三个装饰器的实现
2019/11/08 Python
Python基本类型的连接组合和互相转换方式(13种)
2019/12/16 Python
Python使用20行代码实现微信聊天机器人
2020/06/05 Python
一个不错的HTML5 Canvas多层点击事件监听实例
2014/04/29 HTML / CSS
Maison Lab荷兰:名牌Outlet购物
2018/08/10 全球购物
网络教育自我鉴定
2014/02/04 职场文书
学术会议主持词
2014/03/17 职场文书
村级环境卫生整治方案
2014/05/04 职场文书