不用数据库的多用户文件自由上传投票系统(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编程最快明白》第二讲 数字、浮点、布尔型、字符串和数组
Nov 01 PHP
PHP更新购物车数量(表单部分/PHP处理部分)
May 03 PHP
PHP根据IP判断地区名信息的示例代码
Mar 03 PHP
php通过正则表达式记取数据来读取xml的方法
Mar 09 PHP
PHP脚本监控Nginx 502错误并自动重启php-fpm
May 13 PHP
php简单判断文本编码的方法
Jul 30 PHP
如何解决phpmyadmin导入数据库文件最大限制2048KB
Oct 09 PHP
Yii2.0高级框架数据库增删改查的一些操作
Nov 16 PHP
php session实现多级目录存放实现代码
Feb 03 PHP
深入理解PHP JSON数组与对象
Jul 19 PHP
PHP使用mysqli操作MySQL数据库的简单方法
Feb 04 PHP
利用laravel搭建一个迷你博客实战教程
Aug 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 adodb连接不同数据库
2009/03/19 PHP
php用数组返回无限分类的列表数据的代码
2010/08/08 PHP
php简单对象与数组的转换函数代码(php多层数组和对象的转换)
2011/05/18 PHP
基于php实现长连接的方法与注意事项的问题
2013/05/10 PHP
Server.HTMLEncode让代码在页面里显示为源代码
2013/12/08 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
2016/10/17 PHP
PHP批量获取网页中所有固定种子链接的方法
2016/11/18 PHP
PHP正则匹配操作简单示例【preg_match_all应用】
2017/07/10 PHP
PHPUnit测试私有属性和方法功能示例
2018/06/12 PHP
用户注册常用javascript代码
2009/08/29 Javascript
jQuery 事件队列调整方法
2009/09/18 Javascript
Javascript attachEvent传递参数的办法
2009/12/14 Javascript
纯JAVASCRIPT图表动画插件Highcharts Examples
2011/04/16 Javascript
利用js 进行输入框自动匹配字符的小例子
2013/06/29 Javascript
获取select元素被选中的文本内容的js代码
2014/01/29 Javascript
详解Jquery的事件操作和文档操作
2016/12/19 Javascript
JavaScript中的普通函数和箭头函数的区别和用法详解
2017/03/21 Javascript
JS实现微信里判断页面是否被分享成功的方法
2017/06/06 Javascript
ReactNative短信验证码倒计时控件的实现代码
2017/07/20 Javascript
详解AngularJS1.x学习directive 中‘&amp; ’‘=’ ‘@’符号的区别使用
2017/08/23 Javascript
VUE实现一个分页组件的示例
2017/09/13 Javascript
浅谈webpack下的AOP式无侵入注入
2017/11/12 Javascript
Vue CLI3 开启gzip压缩文件的方式
2018/09/30 Javascript
原生javascript实现连连看游戏
2019/01/03 Javascript
微信小程序如何自定义table组件
2019/06/29 Javascript
JavaScript Array对象基本方法详解
2019/09/03 Javascript
vue项目在线上服务器访问失败原因分析
2020/08/14 Javascript
解决vue与node模版引擎的渲染标记{{}}(双花括号)冲突问题
2020/09/11 Javascript
react+antd 递归实现树状目录操作
2020/11/02 Javascript
[00:48]DOTA2国际邀请赛公开赛报名开始 扫码开启逐梦之旅
2018/06/06 DOTA
基于Linux系统中python matplotlib画图的中文显示问题的解决方法
2017/06/15 Python
python实现微信自动回复及批量添加好友功能
2019/07/03 Python
python使用tomorrow实现多线程的例子
2019/07/20 Python
CSS3实现缺角矩形,折角矩形以及缺角边框
2019/12/20 HTML / CSS
美国著名的婴儿学步鞋老品牌:Robeez
2016/08/20 全球购物
JD Sports瑞典:英国领先的运动时尚商店
2018/01/28 全球购物