不用数据库的多用户文件自由上传投票系统(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 相关文章推荐
来自phpguru得Php Cache类源码
Apr 15 PHP
PHP中文件缓存转内存缓存的方法
Dec 06 PHP
解析file_get_contents模仿浏览器头(user_agent)获取数据
Jun 27 PHP
jquery+php+ajax显示上传进度的多图片上传并生成缩略图代码
Oct 15 PHP
php使用str_replace实现输入框回车替换br的方法
Nov 24 PHP
php编写的一个E-mail验证类
Mar 25 PHP
PHP register_shutdown_function()函数的使用示例
Jun 23 PHP
PHP中配置IIS7实现基本身份验证的方法
Sep 24 PHP
yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法
Apr 20 PHP
php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
May 28 PHP
php生成微信红包数组的方法
Sep 05 PHP
详解Go与PHP的语法对比
May 29 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
PHP7安装Redis扩展教程【Linux与Windows平台】
2016/09/30 PHP
php使用json-schema模块实现json校验示例
2019/09/28 PHP
Laravel5.1 框架Middleware中间件基本用法实例分析
2020/01/04 PHP
Three.js源码阅读笔记(光照部分)
2012/12/27 Javascript
原生javascript图片自动或手动切换示例附演示源码
2013/09/04 Javascript
jQuery中对未来的元素绑定事件用bind、live or on
2014/04/17 Javascript
js获取指定日期周数以及星期几的小例子
2014/06/27 Javascript
JS操作COOKIE实现备忘记录的方法
2016/04/01 Javascript
jQuery插件cxSelect多级联动下拉菜单实例解析
2016/06/24 Javascript
javascript与jquery动态创建html元素示例
2016/07/25 Javascript
jQuery弹出层插件popShow用法示例
2017/01/23 Javascript
Angular 2.0+ 的数据绑定的实现示例
2017/08/09 Javascript
微信小程序radio组件使用详解
2018/01/31 Javascript
webpack组织模块打包Library的原理及实现
2018/03/10 Javascript
JS实现的判断方法、变量是否存在功能示例
2020/03/28 Javascript
vue input实现点击按钮文字增删功能示例
2019/01/29 Javascript
Vue 设置axios请求格式为form-data的操作步骤
2019/10/29 Javascript
ES6箭头函数和扩展实例分析
2020/05/23 Javascript
[08:04]TI4西雅图DOTA2前线报道 海涛探访各路人马
2014/07/09 DOTA
实例讲解Python的函数闭包使用中应注意的问题
2016/06/20 Python
关于python pyqt5安装失败问题的解决方法
2017/08/08 Python
Python打开文件,将list、numpy数组内容写入txt文件中的方法
2018/10/26 Python
python基础知识(一)变量与简单数据类型详解
2019/04/17 Python
python实现动态创建类的方法分析
2019/06/25 Python
python 解决tqdm模块不能单行显示的问题
2020/02/19 Python
python 控制台单行刷新,多行刷新实例
2020/02/19 Python
PyQt5高级界面控件之QTableWidget的具体使用方法
2020/02/23 Python
HTML5中canvas中的beginPath()和closePath()的重要性
2018/08/24 HTML / CSS
详解Canvas事件绑定
2018/06/27 HTML / CSS
canvas离屏技术与放大镜实现代码示例
2018/08/31 HTML / CSS
生产文员岗位职责
2014/04/05 职场文书
三分钟英语演讲稿
2014/04/24 职场文书
上课玩手机的检讨书
2014/10/01 职场文书
农民工工资保障承诺书
2015/05/04 职场文书
启迪人心的励志语录:脾气永远不要大于本事
2020/01/02 职场文书
Mysql中mvcc各场景理解应用
2022/08/05 MySQL