不用数据库的多用户文件自由上传投票系统(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 25 PHP
模拟flock实现文件锁定
Feb 14 PHP
php实现从ftp服务器上下载文件树到本地电脑的程序
Feb 10 PHP
PHP中数组合并的两种方法及区别介绍
Sep 14 PHP
session在php5.3中的变化 session_is_registered() is deprecated in
Nov 12 PHP
ThinkPHP3.1新特性之对页面压缩输出的支持
Jun 19 PHP
php采用curl实现伪造IP来源的方法
Nov 21 PHP
PHP格式化MYSQL返回float类型的方法
Mar 30 PHP
浅谈PHP中关于foreach使用引用变量的坑
Nov 14 PHP
PHP判断数组是否为空的常用方法(五种方法)
Feb 08 PHP
yii2项目实战之restful api授权验证详解
May 20 PHP
php实现socket推送技术的示例
Dec 20 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和Shell实现检查SAMBA与NFS Server是否存在
2015/01/07 PHP
WordPress用户登录框密码的隐藏与部分显示技巧
2015/12/31 PHP
PHP中类属性与类静态变量的访问方法示例
2016/07/13 PHP
PHP实现负载均衡session共享redis缓存操作示例
2018/08/22 PHP
解决PhpStorm64不能启动的问题
2020/06/20 PHP
让textarea控件的滚动条怎是位与最下方
2007/04/20 Javascript
javascript中CheckBox全选终极方案
2015/05/20 Javascript
JS实现把鼠标放到链接上出现滚动文字的方法
2016/04/06 Javascript
jQuery获取访问者IP地址的方法(基于新浪API与QQ查询接口)
2016/05/25 Javascript
【经典源码收藏】基于jQuery的项目常见函数封装集合
2016/06/07 Javascript
Node.js读写文件之批量替换图片的实现方法
2016/09/07 Javascript
jquery-mobile基础属性与用法详解
2016/11/23 Javascript
bootstrap-datetimepicker实现只显示到日期的方法
2016/11/25 Javascript
JS实现动态修改table及合并单元格的方法示例
2017/02/20 Javascript
vuejs如何配置less
2017/04/25 Javascript
jQuery简单实现的HTML页面文本框模糊匹配查询功能完整示例
2018/05/09 jQuery
深入剖析JavaScript instanceof 运算符
2019/06/14 Javascript
利用JavaScript的Map提升性能的方法详解
2019/08/14 Javascript
js 实现 list转换成tree的方法示例(数组到树)
2019/08/18 Javascript
vue路由传参三种基本方式详解
2019/12/09 Javascript
详解ES6 CLASS在微信小程序中的应用实例
2020/04/24 Javascript
vue移动端弹起蒙层滑动禁止底部滑动操作
2020/07/22 Javascript
Python中3种内建数据结构:列表、元组和字典
2014/11/30 Python
详解Python中contextlib上下文管理模块的用法
2016/06/28 Python
pyhanlp安装介绍和简单应用
2019/02/22 Python
pytorch 共享参数的示例
2019/08/17 Python
Django全局启用登陆验证login_required的方法
2020/06/02 Python
日本PLST在线商店:日本时尚杂志刊载的人气服装
2016/12/10 全球购物
阿拉伯书店:Jamalon
2019/07/24 全球购物
荷兰音乐会和音乐剧门票订购网站:Topticketshop
2019/08/27 全球购物
Vita Fede官网:在意大利手工制作,在纽约市设计
2019/10/25 全球购物
中软国际Java程序员笔试题
2014/07/19 面试题
幼儿园小班教学反思
2016/03/03 职场文书
小公司融资,商业计划书的8切记
2019/07/15 职场文书
如何利用opencv判断两张图片是否相同详解
2021/07/07 Python
在MySQL中你成功的避开了所有索引
2022/04/20 MySQL