不用数据库的多用户文件自由上传投票系统(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 相关文章推荐
第十三节--对象串行化
Nov 16 PHP
PHP版自动生成文章摘要
Jul 23 PHP
php在线打包程序源码
Jul 27 PHP
在JavaScript中调用php程序
Mar 09 PHP
PHP中通过语义URL防止网站被攻击的方法分享
Sep 08 PHP
php中__destruct与register_shutdown_function执行的先后顺序问题
Oct 17 PHP
YII Framework框架教程之国际化实现方法
Mar 14 PHP
PHP获取路径和目录的方法总结【必看篇】
Mar 04 PHP
PHP封装的非对称加密RSA算法示例
May 28 PHP
php获取手机端的号码以及ip地址实例代码
Sep 12 PHP
php实现微信和支付宝支付的示例代码
Aug 11 PHP
php swoft框架实例用法
Dec 22 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中使用Oracle数据库(4)
2006/10/09 PHP
一个简单的域名注册情况查询程序
2006/10/09 PHP
php5 apache 2.2 webservice 创建与配置(java)
2011/01/27 PHP
使用PHPMailer实现邮件发送代码分享
2014/10/23 PHP
Symfony2实现在doctrine中内置数据的方法
2016/02/05 PHP
js宝典学习笔记(上)
2007/01/10 Javascript
document.getElementById方法在Firefox与IE中的区别
2010/05/18 Javascript
javascript中节点的最近的相关节点访问方法
2013/03/20 Javascript
node.js中的fs.write方法使用说明
2014/12/15 Javascript
javascript数组随机排序实例分析
2015/07/22 Javascript
微信开发 使用picker封装省市区三级联动模板
2016/10/28 Javascript
JS实现动画兼容性的transition和transform实例分析
2016/12/13 Javascript
EL表达式截取字符串的函数说明
2017/09/22 Javascript
关于vue面试题汇总
2018/03/20 Javascript
小程序实现抽奖动画
2020/04/16 Javascript
vue-cli webpack配置文件分析
2019/05/20 Javascript
JavaScript RegExp 对象用法详解
2019/09/24 Javascript
微信小程序自定义tabBar在uni-app的适配详解
2019/09/30 Javascript
python从sqlite读取并显示数据的方法
2015/05/08 Python
Python地图绘制实操详解
2019/03/04 Python
python中的句柄操作的方法示例
2019/06/20 Python
用Python爬取QQ音乐评论并制成词云图的实例
2019/08/24 Python
基于YUV 数据格式详解及python实现方式
2019/12/09 Python
python入门:argparse浅析 nargs='+'作用
2020/07/12 Python
HTML5 canvas基本绘图之绘制线段
2016/06/27 HTML / CSS
鞋子女王塔玛拉·梅隆同名奢侈品牌:Tamara Mellon
2017/11/22 全球购物
新西兰最大的连锁超市:Countdown
2020/06/04 全球购物
介绍一下Linux文件的记录形式
2013/09/29 面试题
信息专业大学生自我评价分享
2014/01/17 职场文书
《真想变成大大的荷叶》教学反思
2014/04/14 职场文书
高中教师评语大全
2014/04/25 职场文书
2014党员学习习主席讲话思想汇报
2014/09/15 职场文书
2014年体育教师工作总结
2014/12/03 职场文书
2015年个人实习工作总结
2014/12/12 职场文书
学校食堂食品安全承诺书
2015/04/29 职场文书
go 原生http web 服务跨域restful api的写法介绍
2021/04/27 Golang