不用数据库的多用户文件自由上传投票系统(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 相关文章推荐
dedecms系统常用术语汇总
Apr 03 PHP
PHP生成月历代码
Jun 14 PHP
PHP小技巧之JS和CSS优化工具Minify的使用方法
May 19 PHP
PHP中exec函数和shell_exec函数的区别
Aug 20 PHP
PHP遍历XML文档所有节点的方法
Mar 12 PHP
php实现插入数组但不影响原有顺序的方法
Mar 27 PHP
Win7下手动安装apache2.2、php5.4笔记
Apr 03 PHP
WordPress中缩略图的使用以及相关技巧
Nov 24 PHP
PHP生成图片缩略图类示例
Jan 12 PHP
PHP简单计算两个时间差的方法示例
Jun 20 PHP
Linux基于php-fpm模式的lamp搭建phpmyadmin的方法
Oct 25 PHP
Yii2.0 RESTful API 基础配置教程详解
Dec 26 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连接及读取和写入mysql数据库的常用代码
2014/08/11 PHP
php json_encode()函数返回json数据实例代码
2014/10/10 PHP
PHP实现统计所有字符在字符串中出现次数的方法
2017/10/17 PHP
Alliance vs Liquid BO3 第三场2.13
2021/03/10 DOTA
Google韩国首页图标动画效果
2007/08/26 Javascript
jquery异步请求实例代码
2011/06/21 Javascript
Jquery动态更改一张位图的src与Attr的使用
2013/07/31 Javascript
深入理解Javascript动态方法调用与参数修改的问题
2013/12/10 Javascript
在其他地方你学不到的jQuery小贴士和技巧(欢迎收藏)
2016/01/20 Javascript
基于JavaScript实现在新的tab页打开url
2016/08/04 Javascript
JavaScript正则获取地址栏中参数的方法
2017/03/02 Javascript
webpack 2的react开发配置实例代码
2017/07/28 Javascript
jQuery实现简单日期格式化功能示例
2017/09/19 jQuery
js保留两位小数方法总结
2018/01/31 Javascript
vue中实现移动端的scroll滚动方法
2018/03/03 Javascript
promise和co搭配生成器函数方式解决js代码异步流程的比较
2018/05/25 Javascript
jQuery AJAX 方法success()后台传来的4种数据详解
2018/08/08 jQuery
JS使用Date对象实时显示当前系统时间简单示例
2018/08/23 Javascript
vue填坑之webpack run build 静态资源找不到的解决方法
2018/09/03 Javascript
js实现鼠标拖拽缩放div实例代码
2019/03/25 Javascript
使用express获取微信小程序二维码小记
2019/05/21 Javascript
JavaScript判断数组类型的方法
2019/10/23 Javascript
jQuery实现滑动星星评分效果(每日分享)
2019/11/13 jQuery
React+EggJs实现断点续传的示例代码
2020/07/07 Javascript
Postman无法正常返回结果问题解决
2020/08/28 Javascript
python实现数据库跨服务器迁移
2018/04/12 Python
对python自动生成接口测试的示例讲解
2018/11/30 Python
python设置随机种子实例讲解
2019/09/12 Python
计算机应用专业推荐信
2013/11/13 职场文书
公务员年终个人总结
2015/02/12 职场文书
家长会开场白和结束语
2015/05/29 职场文书
预备党员考察意见范文
2015/06/01 职场文书
导游词之上海豫园
2019/10/24 职场文书
SQLServer2008提示评估期已过解决方案
2021/04/12 SQL Server
如何用JavaScript实现一个数组惰性求值库
2021/05/05 Javascript
PC版《死亡搁浅导剪版》现已发售 展开全新的探险
2022/04/03 其他游戏