不用数据库的多用户文件自由上传投票系统(2)


Posted in PHP onOctober 09, 2006

这是本系统的download.php,主要负责下载和记数,其中文件格式均在注释中说明.

<html>

<?php
//传入num为要下载的文件号,col=要下载的分栏
//ip不超时下载次数加一

//文件格式
//0编号<1作者<2文件位置<3投票计数<4简介<5文件大小<6文件下载次数
//ip文件格式  地址:项目:时间

$uploadto="../uploadfile/".$col."/";//上传到的子目录
$cgiroot="http://eccct.51.net/cgi-bin/";    //主机加当前目录

$pathtemp=explode("/",$HTTP_ENV_VARS["PATH_INFO"]);
$pathtemp[sizeof($pathtemp)-1]="";
$cgiroot="http://".$HTTP_HOST.implode("/",$pathtemp);//主机加当前目录

$ipfile=$uploadto.$col.".ipd";//下载用的ip文件
$overtime=4;//超时时间小时

$goback="<br><br><br><br><center>系统将在3秒后返回....</center><script>setTimeout('location.href="view.php?col=".$col.""',3000)</script>";
$recfile=$uploadto.$col.".lst";

//取出ip文件
$fp=@fopen($ipfile,"r") or die("对不起该投票不合法".$goback);
$ipinfo=fread($fp,filesize($ipfile));
fclose($fp);
unlink($ipfile);
$times=getdate();
$abstime=$times["yday"].sprintf("%02d",$times["hours"]);
//绝对时间  

//把超时的ip去掉
$ip_times=explode("|",$ipinfo);
$temp="";
$ipinfo="";

    for($i=0;$i<sizeof($ip_times);$i++){

        $ip=explode(":",$ip_times[$i]);
        if($ip[1]==""||$ip[0]==""||$ip[2]=="") continue;
        eval ('$temp='.$abstime.'-'.$ip[2].';');

        if($temp<$overtime&&$temp>=0){

        $ipinfo.=($ip_times[$i]."|");
        }
    }
//echo $ipinfo;
if(strstr($ipinfo,$REMOTE_ADDR.":".$num))
{
    $fp=@fopen($ipfile,"w") or die("出现错误".$goback);
    fwrite($fp,$ipinfo);
    fclose($fp);
    $firstdown=0;//第一次下载
}
else{
$firstdown=1;//不是第一次下载

$ipinfo=$ipinfo.$REMOTE_ADDR.":".$num.":".$abstime."|";

$fp=@fopen($ipfile,"w") or die("出现错误".$goback);
fwrite($fp,$ipinfo);
fclose($fp);
}

//ip判断结束

for($i=0;$i<100 && !file_exists($recfile);$i++);
if($i==99) die("系统出错00".$goback);

$fp=@fopen($recfile,"r") or die("对不起不合法".$goback);
$info=explode(">",fread($fp,filesize($recfile)));
fclose($fp);
copy($recfile,$recfile.".bak");
unlink($recfile);

for($i=0;$i<sizeof($info);$i++){

    $items=explode("<",$info[$i]);
         if(!trim($items[0])) continue;
    if(trim($items[0])==$num){//要下载的项目
        if($firstdown)
        $items[6]++;
        $filepath=$uploadto.$items[2];
        $info[$i]=implode("<",$items);         
        break;
    }

         
}

//$writetofile=implode(">",$info);

if(!$fp=fopen($recfile,"w")){
copy($votefile.".bak",$votefile);
die("出错02".$goback);
}

for($i=0;$i<sizeof($info);$i++){
    if(trim($info[$i])!="") fputs($fp,trim($info[$i].">"));
}
    fclose($fp);

echo "<head><meta http-equiv='refresh' content='3;URL=".$filepath."'>";
echo "<link rel='stylesheet' href='../css/eccct.css'></head>";
echo "<body class=tb >";
echo "<div >";
echo "<br><br><br>";
echo "<div class='values'>您的浏览器会在三秒钟后自动下载</div>";
echo "<br><br><br>";
echo "<div class='values'>或者点击<a href='".$filepath."'>此处</a>下载</div>";
echo "<br><br><br>";
echo "</div>";

//echo $HTTP_ENV_VARS["PATH_INFO"];
//echo "<script>window.location.href='".$filepath."';window.close();</script>";

echo "</body>";

//header("Content-type: application/.rar");

//header("Content-Disposition: attachment; filename=".$filepath);
//Header("Location: ".$filepath);
//header("Content-Description: PHP3 Generated Data

?>
</html>

PHP 相关文章推荐
php获得文件扩展名三法
Nov 25 PHP
Windows下IIS6/Apache2.2.4+MySQL5.2+PHP5.2.1安装配置方法
May 03 PHP
PHP设计模式之装饰者模式
Feb 29 PHP
初步介绍PHP扩展开发经验分享
Sep 06 PHP
Windows中使用计划任务自动执行PHP程序实例
May 09 PHP
ECMall支持SSL连接邮件服务器的配置方法详解
May 19 PHP
PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)
Jun 19 PHP
使用URL传输SESSION信息
Jul 14 PHP
php解析xml 的四种简单方法(附实例)
Jul 11 PHP
Laravel学习教程之从入口到输出过程详解
Aug 27 PHP
php操作mongodb封装类与用法实例
Sep 01 PHP
PHP7 foreach() 函数修改
Mar 09 PHP
PHP4实际应用经验篇(4)
Oct 09 #PHP
Php做的端口嗅探器--可以指定网站和端口
Oct 09 #PHP
PHP4实际应用经验篇(3)
Oct 09 #PHP
在字符串中把网址改成超级链接
Oct 09 #PHP
PHP4实际应用经验篇(2)
Oct 09 #PHP
PHP4实际应用经验篇(1)
Oct 09 #PHP
新闻分类录入、显示系统
Oct 09 #PHP
You might like
php header()函数使用说明
2008/07/10 PHP
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
2013/12/02 PHP
php制作简单模版引擎
2016/04/07 PHP
js 目录列举函数
2008/11/06 Javascript
基于JavaScript自定义构造函数的详解说明
2013/04/24 Javascript
jquery固定底网站底部菜单效果
2013/08/13 Javascript
JS使用eval解析JSON的注意事项分析
2015/11/14 Javascript
js实现图片360度旋转
2017/01/22 Javascript
Node.js通过身份证号验证年龄、出生日期与性别方法示例
2017/03/09 Javascript
浅谈react+es6+webpack的基础配置
2017/08/09 Javascript
vue绑定class与行间样式style详解
2017/08/16 Javascript
Less 安装及基本用法
2018/05/05 Javascript
微信小程序实现倒计时调用相机自动拍照功能
2018/06/10 Javascript
JSON数据中存在单个转义字符“\”的处理方法
2018/07/11 Javascript
简单通过settimeout看javascript的运行机制
2019/05/10 Javascript
layui自定义验证,用ajax查询后台是否有重复数据,form.verify的例子
2019/09/06 Javascript
Vue实现图片轮播组件思路及实例解析
2020/05/11 Javascript
vue 动态设置img的src地址无效,npm run build 后找不到文件的解决
2020/07/26 Javascript
[39:18]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第二场 12.17
2020/12/19 DOTA
Python调用adb命令实现对多台设备同时进行reboot的方法
2018/10/15 Python
Python实现正则表达式匹配任意的邮箱方法
2018/12/20 Python
对pandas写入读取h5文件的方法详解
2018/12/28 Python
python数值基础知识浅析
2019/11/19 Python
创建Shapefile文件并写入数据的例子
2019/11/26 Python
Python bisect模块原理及常见实例
2020/06/17 Python
如何在Canvas上的图形/图像绑定事件监听的实现
2020/09/16 HTML / CSS
西班牙香水和化妆品网上商店:Douglas
2017/10/29 全球购物
如何理解委托
2012/01/06 面试题
大唐面试试题(CPU,UNIX等等)
2012/01/11 面试题
旅游管理专业学生求职信
2013/09/28 职场文书
历史学专业个人的自我评价
2013/10/13 职场文书
会议活动邀请函
2014/01/27 职场文书
预备党员自我批评思想汇报
2014/10/10 职场文书
史上最牛的辞职信
2015/02/28 职场文书
Javascript设计模式之原型模式详细
2021/10/05 Javascript
python 单机五子棋对战游戏
2022/04/28 Python