不用数据库的多用户文件自由上传投票系统(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 IP及IP段进行访问限制的代码
Dec 17 PHP
PHP 类型转换函数intval
Jun 20 PHP
PHP5权威编程阅读学习笔记 附电子书下载
Jul 05 PHP
深入eAccelerator与memcached的区别详解
Jun 06 PHP
深入理解:XML与对象的序列化与反序列化
Jun 08 PHP
浅析PHP中Collection 类的设计
Jun 21 PHP
PHP+Memcache实现wordpress访问总数统计(非插件)
Jul 04 PHP
php计算两个整数的最大公约数常用算法小结
Mar 05 PHP
thinkphp实现图片上传功能
Jan 13 PHP
PHP进程通信基础之信号量与共享内存通信
Feb 19 PHP
php使用curl伪造浏览器访问操作示例
Sep 30 PHP
PHP配置文件php.ini中打开错误报告的设置方法
Jan 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
关于IIS php调用com组件的权限问题
2012/01/11 PHP
php实现过滤字符串中的中文和数字实例
2015/07/29 PHP
PHP7 新特性详细介绍
2016/09/06 PHP
php 处理png图片白色背景色改为透明色的实例代码
2018/12/10 PHP
jQuery EasyUI API 中文文档 - ValidateBox验证框
2011/10/06 Javascript
Js实现网页键盘控制翻页的方法
2014/10/30 Javascript
js实现跨域的方法实例详解
2015/06/24 Javascript
JavaScript类型系统之布尔Boolean类型详解
2016/06/26 Javascript
Nodejs全局安装和本地安装的不同之处
2016/07/04 NodeJs
JavaScript定义数组的三种方法(new Array(),new Array('x','y')
2016/10/04 Javascript
JS排序算法之希尔排序与快速排序实现方法
2017/12/12 Javascript
Vue.js组件间的循环引用方法示例
2017/12/27 Javascript
Vue导出页面为PDF格式的实现思路
2018/07/31 Javascript
在vue项目中优雅的使用SVG的方法实例详解
2018/12/03 Javascript
详解JSON和JSONP劫持以及解决方法
2019/03/08 Javascript
微信小程序select下拉框实现源码
2019/11/08 Javascript
解决 window.onload 被覆盖的问题方法
2020/01/14 Javascript
Vue实现简单计算器
2021/01/20 Vue.js
Python文件操作类操作实例详解
2014/07/11 Python
python中文乱码不着急,先看懂字节和字符
2017/12/20 Python
详解python之协程gevent模块
2018/06/14 Python
python简单验证码识别的实现方法
2019/05/10 Python
python实现树的深度优先遍历与广度优先遍历详解
2019/10/26 Python
基于django micro搭建网站实现加水印功能
2020/05/22 Python
html5 Canvas画图教程(5)—canvas里画曲线之arc方法
2013/01/09 HTML / CSS
戴森美国官网:Dyson美国
2016/09/11 全球购物
Kingsoft金山公司C/C++笔试题
2016/05/10 面试题
机械设计及其自动化专业求职信
2014/06/09 职场文书
2014迎国庆演讲稿
2014/09/19 职场文书
2014幼儿园保育员工作总结
2014/11/10 职场文书
销售督导岗位职责
2015/04/10 职场文书
消夏晚会主持词
2015/06/30 职场文书
反邪教学习心得体会
2016/01/15 职场文书
励志语录:时光飞逝,请学会珍惜所有的人和事
2020/01/16 职场文书
端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!
2021/06/11 Python
解决redis批量删除key值的问题
2022/03/23 Redis