不用数据库的多用户文件自由上传投票系统(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 相关文章推荐
header()函数使用说明
Nov 23 PHP
基于ubuntu下nginx+php+mysql安装配置的具体操作步骤
Apr 28 PHP
php统计文章排行示例
Mar 04 PHP
php检测useragent版本示例
Mar 24 PHP
PHP批量生成静态HTML的简单原理和方法
Apr 20 PHP
推荐一款PHP+jQuery制作的列表分页的功能模块
Oct 14 PHP
PHP的Socket通信之UDP通信实例
Jul 02 PHP
PHP获取指定月份第一天和最后一天的方法
Jul 18 PHP
PHP新建类问题分析及解决思路
Nov 19 PHP
PHP获取页面执行时间的方法(推荐)
Dec 10 PHP
PHP并发查询MySQL的实例代码
Aug 09 PHP
PHP设计模式之策略模式原理与用法实例分析
Apr 04 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
实时抓取YAHOO股票报价的代码
2006/10/09 PHP
PHP容易被忽略而出错陷阱 数字与字符串比较
2011/11/10 PHP
php发送post请求函数分享
2014/03/06 PHP
Laravel用户授权系统的使用方法示例
2018/09/16 PHP
PHP的mysqli_sqlstate()函数讲解
2019/01/23 PHP
PHP错误提示It is not safe to rely on the system……的解决方法
2019/03/25 PHP
新浪刚打开页面出来的全屏广告代码
2007/04/02 Javascript
jQuery 1.7.2中getAll方法的疑惑分析
2012/05/23 Javascript
jquery1.83 之前所有与异步列队相关的模块详细介绍
2012/11/13 Javascript
网页加载时页面显示进度条加载完成之后显示网页内容
2012/12/23 Javascript
js中call与apply的用法小结
2013/12/28 Javascript
谈谈AngularJs中的隐藏和显示
2015/12/09 Javascript
JavaScript编写带旋转+线条干扰的验证码脚本实例
2016/05/30 Javascript
深入理解React中es6创建组件this的方法
2016/08/29 Javascript
简单实现bootstrap选项卡效果
2017/02/08 Javascript
微信小程序合法域名配置方法
2019/05/06 Javascript
[01:01:31]2018DOTA2亚洲邀请赛3月29日小组赛B组 Mineski VS paiN
2018/03/30 DOTA
Python中为什么要用self探讨
2015/04/14 Python
Python函数式编程指南(四):生成器详解
2015/06/24 Python
python开发之thread实现布朗运动的方法
2015/11/11 Python
TensorFlow高效读取数据的方法示例
2018/02/06 Python
Python中PyQt5/PySide2的按钮控件使用实例
2019/08/17 Python
Python实现随机生成任意数量车牌号
2020/01/21 Python
python GUI库图形界面开发之PyQt5信号与槽机制、自定义信号基础介绍
2020/02/25 Python
Python自带的IDE在哪里
2020/07/01 Python
详解pandas赋值失败问题解决
2020/11/29 Python
英国领先的男装设计师服装独立零售商:Repertoire Fashion
2020/10/19 全球购物
abstract class和interface有什么区别
2013/08/04 面试题
财务部岗位职责
2013/11/19 职场文书
读书小明星事迹材料
2014/05/03 职场文书
女方离婚起诉书
2015/05/18 职场文书
西部计划志愿者工作总结
2015/08/11 职场文书
redis配置文件中常用配置详解
2021/04/14 Redis
PyTorch dropout设置训练和测试模式的实现
2021/05/27 Python
HTML基本元素标签介绍
2022/02/28 HTML / CSS
css弧边选项卡的项目实践
2023/05/07 HTML / CSS