不用数据库的多用户文件自由上传投票系统(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 相关文章推荐
apache+codeigniter 通过.htcaccess做动态二级域名解析
Jul 01 PHP
PHP读取PDF内容配合Xpdf的使用
Nov 24 PHP
PHP eval函数使用介绍
Dec 08 PHP
php随机抽奖实例分析
Mar 04 PHP
php序列化函数serialize() 和 unserialize() 与原生函数对比
May 08 PHP
PHP文件系统管理(实例讲解)
Sep 19 PHP
PHP实现用户登录的案例代码
May 10 PHP
关于php unset对json_encode的影响详解
Nov 14 PHP
PHP iconv()函数字符编码转换的问题讲解
Mar 22 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
Mar 27 PHP
PHP开发api接口安全验证操作实例详解
Mar 26 PHP
如何用Laravel包含你自己的帮助函数
May 27 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
8个出色的WordPress SEO插件收集
2011/02/26 PHP
php 数组排序 array_multisort与uasort的区别
2011/03/24 PHP
PHP获取http请求的头信息实现步骤
2012/12/16 PHP
php实现微信扫码自动登陆与注册功能
2016/09/22 PHP
JS Timing
2007/04/21 Javascript
fix-ie5.js扩展在IE5下不能使用的几个方法
2007/08/20 Javascript
jquery插件jbox使用iframe关闭问题
2009/02/09 Javascript
JavaScript 字符编码规则
2009/05/04 Javascript
Javascript 两个窗体之间传值实现代码
2009/09/25 Javascript
js注意img图片的onerror事件的分析
2011/01/01 Javascript
用JSON做数据传输格式中的一些问题总结
2011/12/21 Javascript
window.onload追加函数使用示例
2014/03/03 Javascript
javascript if条件判断方法小结
2014/05/17 Javascript
通过JS动态创建一个html DOM元素并显示
2014/10/15 Javascript
Jquery Ajax xmlhttp请求成功问题
2015/02/04 Javascript
JS判断字符串包含的方法
2015/05/05 Javascript
JS密码生成与强度检测完整实例(附demo源码下载)
2016/04/06 Javascript
基于JavaScript Array数组方法(新手必看篇)
2016/08/20 Javascript
jQuery判断自定义属性data-val用法示例
2019/01/07 jQuery
通过实践编写优雅的JavaScript代码
2019/05/30 Javascript
JS代码屏蔽F12,右键,粘贴,复制,剪切,选中,操作实例
2019/09/17 Javascript
wxPython窗口中文乱码解决方法
2014/10/11 Python
selenium+python实现1688网站验证码图片的截取功能
2018/08/14 Python
python笔记之mean()函数实现求取均值的功能代码
2019/07/05 Python
GDAL 矢量属性数据修改方式(python)
2020/03/10 Python
浅谈keras中Dropout在预测过程中是否仍要起作用
2020/07/09 Python
STUBHUB日本:购买和出售全球活动门票
2018/07/01 全球购物
Made in Design德国:设计师家具、灯具和装饰
2019/10/31 全球购物
系统管理员的职责包括那些?管理的对象是什么?
2013/01/18 面试题
英文版银行求职信
2013/10/09 职场文书
应届毕业生的自我鉴定
2013/11/13 职场文书
材料工程专业毕业生求职信
2014/03/04 职场文书
校园安全演讲稿
2014/05/09 职场文书
镇创先争优活动总结
2014/08/28 职场文书
终止或解除劳动合同及劳动关系的证明书
2014/10/06 职场文书
apache虚拟主机配置的三种方式(小结)
2022/07/23 Servers