不用数据库的多用户文件自由上传投票系统(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 相关文章推荐
VIM中设置php自动缩进为4个空格的方法详解
Jun 14 PHP
PHP实现使用优酷土豆视频地址获取swf播放器分享地址
Jun 05 PHP
PHP采集类snoopy详细介绍(snoopy使用教程)
Jun 19 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十一)
Jun 25 PHP
PHP获取当前所在目录位置的方法
Nov 26 PHP
php通过记录IP来防止表单重复提交方法分析
Dec 16 PHP
PHP调用.NET的WebService 简单实例
Mar 27 PHP
php正则表达式获取内容所有链接
Jul 24 PHP
php使用函数pathinfo()、parse_url()和basename()解析URL
Nov 25 PHP
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
Aug 11 PHP
CentOS7编译安装php7.1的教程详解
Apr 18 PHP
PHP写API输出的时用echo的原因详解
Apr 28 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
在字符串中把网址改成超级链接
2006/10/09 PHP
CI框架学习笔记(二) -入口文件index.php
2014/10/27 PHP
php实现给二维数组中所有一维数组添加值的方法
2017/02/04 PHP
PHP判断json格式是否正确的实现代码
2017/09/20 PHP
实现php删除链表中重复的结点
2018/09/27 PHP
FileUpload 控件 禁止手动输入或粘贴的实现代码
2010/04/07 Javascript
JS 如何获取radio选中后的值及不选择取radio的值
2013/10/28 Javascript
jquery 操作iframe的几种方法总结
2013/12/13 Javascript
原生js实现复制对象、扩展对象 类似jquery中的extend()方法
2014/08/30 Javascript
jQuery中:checkbox选择器用法实例
2015/01/03 Javascript
jQuery前端分页示例分享
2015/02/10 Javascript
javascript实现框架高度随内容改变的方法
2015/07/23 Javascript
JS实现仿FLASH效果的竖排导航代码
2015/09/15 Javascript
JavaScript实现的简单烟花特效代码
2015/10/20 Javascript
JS实现表单验证功能(验证手机号是否存在,验证码倒计时)
2016/10/11 Javascript
js canvas实现橡皮擦效果
2018/12/20 Javascript
javascript合并两个数组最简单的实现方法
2019/09/14 Javascript
12 种使用Vue 的最佳做法
2020/03/30 Javascript
python实现从字典中删除元素的方法
2015/05/04 Python
在PyCharm下打包*.py程序成.exe的方法
2018/11/29 Python
pyqt5利用pyqtDesigner实现登录界面
2019/03/28 Python
简单了解django缓存方式及配置
2019/07/19 Python
pymysql 插入数据 转义处理方式
2020/03/02 Python
降低python版本的操作方法
2020/09/11 Python
英国最出名高街品牌:Forever Unique
2018/02/24 全球购物
百度吧主申请感言
2014/01/12 职场文书
师范教师毕业鉴定
2014/01/13 职场文书
中学运动会广播稿
2014/01/19 职场文书
市场专员岗位职责
2014/02/14 职场文书
我的大学生活演讲稿
2014/04/25 职场文书
反邪教警示教育方案
2014/05/13 职场文书
幸福家庭事迹材料
2014/12/20 职场文书
就业意向协议书
2015/01/29 职场文书
会计实训总结范文
2015/08/03 职场文书
毕业季聚会祝酒词!
2019/07/04 职场文书
Python趣味实战之手把手教你实现举牌小人生成器
2021/06/07 Python