不用数据库的多用户文件自由上传投票系统(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 相关文章推荐
javascript 小型动画组件与实现代码
Jun 02 PHP
PHP中输出转义JavaScript代码的实现代码
Apr 22 PHP
smarty基础之拼接字符串的详解
Jun 18 PHP
php多用户读写文件冲突的解决办法
Nov 06 PHP
PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
Jun 12 PHP
关于PHP开发的9条建议
Jul 27 PHP
使用PHP uniqid函数生成唯一ID
Nov 18 PHP
PHP 微信支付类 demo
Nov 30 PHP
php结合md5实现的加密解密方法
Jan 25 PHP
PHP 中使用explode()函数切割字符串为数组的示例
May 06 PHP
总结一些PHP中好用但又容易忽略的小知识
Jun 02 PHP
PHP实现下载远程图片保存到本地的方法
Jun 19 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实现图片等比例放大和缩小的方法详解
2013/06/06 PHP
仿dedecms下拉分页样式修改的thinkphp分页类实例
2014/10/30 PHP
PHP中时间加减函数strtotime用法分析
2017/04/26 PHP
jQuery中delegate与on的用法与区别示例介绍
2013/12/20 Javascript
让JavaScript的Alert弹出框失效的方法禁止弹出警告框
2014/09/03 Javascript
Js使用WScript.Shell对象执行.bat文件和cmd命令
2014/12/18 Javascript
JavaScript通过事件代理高亮显示表格行的方法
2015/05/27 Javascript
JavaScript学习笔记之数组的增、删、改、查
2016/03/23 Javascript
使用jQuery制作浮动工具栏的实例分享
2016/05/13 Javascript
AngularJS实践之使用NgModelController进行数据绑定
2016/10/08 Javascript
AngularJS动态绑定HTML的方法分析
2016/11/07 Javascript
关于Vue.js一些问题和思考学习笔记(2)
2016/12/02 Javascript
javascript中的面向对象
2017/03/30 Javascript
基于vue-cli创建的项目的目录结构及说明介绍
2017/11/23 Javascript
Vue2.5通过json文件读取数据的方法
2018/02/27 Javascript
对Vue2 自定义全局指令Vue.directive和指令的生命周期介绍
2018/08/30 Javascript
聊聊Vue中provide/inject的应用详解
2019/11/10 Javascript
解决vue 使用axios.all()方法发起多个请求控制台报错的问题
2020/11/09 Javascript
python将人民币转换大写的脚本代码
2013/02/10 Python
python去除扩展名的实例讲解
2018/04/23 Python
pycharm中成功运行图片的配置教程
2018/10/28 Python
Laura Mercier官网:彩妆大师罗拉玛斯亚的化妆品牌
2018/01/04 全球购物
如何用Python来进行查询和替换一个文本字符串
2014/01/02 面试题
控制工程专业个人求职信
2013/09/25 职场文书
自我鉴定范文300字
2013/10/01 职场文书
护理自我鉴定范文
2013/10/06 职场文书
药学专业大学生个人的自我评价
2013/11/04 职场文书
前台接待岗位职责
2013/12/03 职场文书
商场总经理岗位职责
2014/02/03 职场文书
工程师岗位职责规定
2014/02/26 职场文书
俄语专业毕业生求职信
2014/07/12 职场文书
旅游局领导班子“四风”问题对照检查材料思想汇报
2014/09/29 职场文书
管理人员岗位职责
2015/02/14 职场文书
大学毕业晚会开场白
2015/05/29 职场文书
2015年汽车销售员工作总结
2015/07/24 职场文书
2016年学校禁毒宣传活动工作总结
2016/04/05 职场文书