不用数据库的多用户文件自由上传投票系统(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 24 PHP
PHP连接SQLServer2005 的问题解决方法
Jul 19 PHP
调整优化您的LAMP应用程序的5种简单方法
Jun 26 PHP
PHP处理excel cvs表格的方法实例介绍
May 13 PHP
用 Composer构建自己的 PHP 框架之基础准备
Oct 30 PHP
推荐一本PHP程序猿都应该拜读的书
Dec 31 PHP
php导出csv文件,可导出前导0实例代码
Nov 16 PHP
php常用字符函数实例小结
Dec 29 PHP
PHP中让json_encode不自动转义斜杠“/”的方法
Feb 28 PHP
php实现表单提交上传文件功能
May 28 PHP
PHP单例模式数据库连接类与页面静态化实现方法
Mar 20 PHP
你真的了解PHP中的引用符号(&)吗
May 12 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多个文件上传到服务器实例
2014/10/29 PHP
linux中cd命令使用详解
2015/01/08 PHP
Laravel SQL语句记录方式(推荐)
2016/05/26 PHP
php版微信公众平台回复中文出现乱码问题的解决方法
2016/09/22 PHP
php微信公众号开发(2)百度BAE搭建和数据库使用
2016/12/15 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
setInterval 和 setTimeout会产生内存溢出
2008/02/15 Javascript
jQuery on方法传递参数示例
2014/12/09 Javascript
jQuery+css3动画属性制作猎豹浏览器宽屏banner焦点图
2015/03/16 Javascript
JavaScript中的函数声明和函数表达式区别浅析
2015/03/27 Javascript
jQuery插件expander实现图片翻转特效
2015/05/21 Javascript
Ajax的概述与实现过程
2016/11/18 Javascript
php register_shutdown_function函数详解
2017/07/23 Javascript
微信小程序网络请求封装示例
2018/07/24 Javascript
vue中axios实现数据交互与跨域问题
2019/05/12 Javascript
ant design vue导航菜单与路由配置操作
2020/10/28 Javascript
Python urlopen 使用小示例
2008/09/06 Python
利用Python开发实现简单的记事本
2016/11/15 Python
python制作websocket服务器实例分享
2016/11/20 Python
wxPython之解决闪烁的问题
2018/01/15 Python
Python爬虫PyQuery库基本用法入门教程
2018/08/04 Python
python框架中flask知识点总结
2018/08/17 Python
Python 脚本获取ES 存储容量的实例
2018/12/27 Python
pycharm不能运行.py文件的解决方法
2020/02/12 Python
安全教育实施方案
2014/03/02 职场文书
四下基层实施方案
2014/03/28 职场文书
企业文化演讲稿
2014/05/20 职场文书
2014学生会工作总结报告
2014/12/02 职场文书
2015年高校图书馆工作总结
2015/04/30 职场文书
公司回复函格式
2015/07/14 职场文书
个人道歉信大全
2019/04/11 职场文书
Redis6.0搭建集群Redis-cluster的方法
2021/05/08 Redis
教你利用python实现企业微信发送消息
2021/05/23 Python
解析mybatis-plus中的resultMap简单使用
2021/11/23 Java/Android
请求模块urllib之PYTHON爬虫的基本使用
2022/04/08 Python