不用数据库的多用户文件自由上传投票系统(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 相关文章推荐
?繁体转换的class
Oct 09 PHP
php提示Call-time pass-by-reference has been deprecated in的解决方法[已测]
May 06 PHP
浅析php插件 HTMLPurifier HTML解析器
Jul 01 PHP
YII路径的用法总结
Jul 09 PHP
php使用session二维数组实例
Nov 06 PHP
Yii多表联合查询操作详解
Jun 02 PHP
PHP自定义图片缩放函数实现等比例不失真缩放的方法
Aug 19 PHP
php正则去除网页中所有的html,js,css,注释的实现方法
Nov 03 PHP
php 删除指定文件夹的实例讲解
Jul 25 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
Feb 23 PHP
PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
May 11 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
Dec 30 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中使用GD库绘制折线图 折线统计图的绘制方法
2015/11/09 PHP
PHP静态成员变量和非静态成员变量详解
2017/02/14 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
js 发个判断字符串是否为符合标准的函数
2009/04/27 Javascript
JavaScript 乱码问题
2009/08/06 Javascript
JQuery 操作select标签实现代码
2010/05/14 Javascript
JavaScript面向对象编程入门教程
2014/04/16 Javascript
两种方法基于jQuery实现IE浏览器兼容placeholder效果
2014/10/14 Javascript
jquery实现具有收缩功能的垂直导航菜单
2016/02/16 Javascript
JS控件bootstrap suggest plugin使用方法详解
2017/03/25 Javascript
微信小程序 循环及嵌套循环的使用总结
2017/09/26 Javascript
JS实现从对象获取对象中单个键值的方法示例
2019/06/05 Javascript
vue项目创建步骤及路由router
2020/01/14 Javascript
JavaScript十大取整方法实例教程
2020/12/03 Javascript
vue下拉刷新组件的开发及slot的使用详解
2020/12/23 Vue.js
[02:28]DOTA2英雄基础教程 灰烬之灵
2013/12/19 DOTA
python进阶教程之循环相关函数range、enumerate、zip
2014/08/30 Python
python破解zip加密文件的方法
2018/05/31 Python
python使用正则筛选信用卡
2019/01/27 Python
Python Web框架之Django框架cookie和session用法分析
2019/08/16 Python
pytorch点乘与叉乘示例讲解
2019/12/27 Python
Python3.7在anaconda里面使用IDLE编译器的步骤详解
2020/04/29 Python
Python xlrd模块导入过程及常用操作
2020/06/10 Python
python pymysql库的常用操作
2020/10/16 Python
matplotlib相关系统目录获取方式小结
2021/02/03 Python
手工制作的豪华英式沙发和沙发床:Willow & Hall
2019/05/03 全球购物
介绍一下except的用法和作用
2015/01/22 面试题
销售经理竞聘书
2014/03/31 职场文书
学生请假条格式
2014/04/11 职场文书
会计个人实习计划书
2014/08/15 职场文书
喝酒驾驶检讨书
2014/10/01 职场文书
繁星春水读书笔记
2015/06/30 职场文书
2016先进集体事迹材料范文
2016/02/25 职场文书
为什么中国式养孩子很累?
2019/08/07 职场文书
利用python进行数据加载
2021/06/20 Python