不用数据库的多用户文件自由上传投票系统(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 相关文章推荐
第六节 访问属性和方法 [6]
Oct 09 PHP
PHP 类商品秒杀计时实现代码
May 05 PHP
PHP写杨辉三角实例代码
Jul 17 PHP
Laravel中使用阿里云OSS Composer包分享
Feb 10 PHP
PHP遍历XML文档所有节点的方法
Mar 12 PHP
Yii扩展组件编写方法实例分析
Jun 29 PHP
php中实现用数组妩媚地生成要执行的sql语句
Jul 10 PHP
php实现无限级分类(递归方法)
Aug 06 PHP
php简单压缩css样式示例
Sep 22 PHP
php实现的简单中文验证码功能示例
Jan 03 PHP
搜索附近的人PHP实现代码
Feb 11 PHP
详解thinkphp的Auth类认证
May 28 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来处理多个提交任务
2006/10/09 PHP
提取HTML标签
2006/10/09 PHP
php mail to 配置详解
2014/01/16 PHP
php计算数组不为空元素个数的方法
2014/01/27 PHP
ie 7/8不支持trim的属性的解决方案
2014/05/23 Javascript
JavaScript搜索字符串并将搜索结果返回到字符串的方法
2015/04/06 Javascript
JQuery简单实现锚点链接的平滑滚动
2015/05/03 Javascript
javascript页面倒计时实例
2015/07/25 Javascript
使用EVAL处理jqchart jquery 折线图返回数据无效的解决办法
2015/11/26 Javascript
浅谈js中调用函数时加不加括号的问题
2016/07/28 Javascript
最棒的Angular2表格控件
2016/08/10 Javascript
AngularJS API之copy深拷贝详解及实例
2016/09/14 Javascript
浅谈jquery拼接字符串效率比较高的方法
2017/02/22 Javascript
Vue插件写、用详解(附demo)
2017/03/20 Javascript
Nginx设置为Node.js的前端服务器方法总结
2019/03/27 Javascript
一些手写JavaScript常用的函数汇总
2019/04/16 Javascript
python中list常用操作实例详解
2015/06/03 Python
python difflib模块示例讲解
2017/09/13 Python
python主线程捕获子线程的方法
2018/06/17 Python
python 实现创建文件夹和创建日志文件的方法
2019/07/07 Python
Python内置异常类型全面汇总
2020/05/28 Python
Numpy 多维数据数组的实现
2020/06/18 Python
vscode调试django项目的方法
2020/08/06 Python
使用JS+CSS3技术:让你的名字动起来
2013/04/27 HTML / CSS
StubHub意大利:购买和出售全球演唱会和体育赛事门票
2017/11/21 全球购物
澳大利亚最便宜的网上药房:Chemist Warehouse
2020/01/30 全球购物
Delphi CS笔试题
2014/01/04 面试题
四年的个人工作自我评价
2013/12/10 职场文书
护士毕业自我鉴定
2014/02/07 职场文书
优秀食品类广告词
2014/03/19 职场文书
2014年乡镇个人工作总结
2014/12/03 职场文书
社区安置帮教工作总结2015
2015/05/20 职场文书
魂断蓝桥观后感
2015/06/10 职场文书
《卧薪尝胆》读后感3篇
2019/12/26 职场文书
深度学习详解之初试机器学习
2021/04/14 Python
详解Flutter自定义应用程序内键盘的实现方法
2022/06/14 Java/Android