不用数据库的多用户文件自由上传投票系统(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 相关文章推荐
实用函数8
Nov 08 PHP
PHP连接和操作MySQL数据库基础教程
Sep 29 PHP
Windows下的PHP安装pear教程
Oct 24 PHP
php新浪微博登录接口用法实例
Dec 23 PHP
php+mysqli实现批量执行插入、更新及删除数据的方法
Jan 29 PHP
php验证码生成代码
Nov 11 PHP
php实现爬取和分析知乎用户数据
Jan 26 PHP
php解析xml 的四种简单方法(附实例)
Jul 11 PHP
详解php中 === 的使用
Oct 24 PHP
php获取数据库结果集方法(推荐)
Jun 01 PHP
PHP构造二叉树算法示例
Jun 21 PHP
Laravel validate error处理,ajax,json示例
Oct 25 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
一个高ai的分页函数和一个url函数
2006/10/09 PHP
实用函数9
2007/11/08 PHP
php笔记之:AOP的应用
2013/04/24 PHP
如何在Ubuntu下启动Apache的Rewrite功能
2013/07/05 PHP
PHP strstr 函数判断字符串是否否存在的实例代码
2013/09/28 PHP
浅谈json_encode用法
2015/03/05 PHP
PHP开发中AJAX技术的简单应用
2015/12/11 PHP
用js实现小球的自由移动代码
2013/04/22 Javascript
探讨在JQuery和Js中,如何让ajax执行完后再继续往下执行
2013/07/09 Javascript
js中array的sort()方法使用介绍
2014/02/20 Javascript
浅谈javascript的调试
2015/01/28 Javascript
js实现精美的图片跟随鼠标效果实例
2015/05/16 Javascript
《JavaScript高级编程》学习笔记之object和array引用类型
2015/11/01 Javascript
Javascript的表单验证-揭开正则表达式的面纱
2016/03/18 Javascript
详解JavaScript模块化开发
2016/12/04 Javascript
JavaScript自定义文本框光标
2017/03/05 Javascript
利用vscode编写vue的简单配置详解
2017/06/17 Javascript
JS获取当前时间的实例代码(昨天、今天、明天)
2018/11/13 Javascript
微信小程序学习笔记之登录API与获取用户信息操作图文详解
2019/03/29 Javascript
原生javascript运动函数的封装示例【匀速、抛物线、多属性的运动等】
2020/02/23 Javascript
JavaScript中的各种宽高属性的实现
2020/05/08 Javascript
浅谈JavaScript中this的指向问题
2020/07/28 Javascript
[40:48]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第二局
2016/02/28 DOTA
Tensorflow分类器项目自定义数据读入的实现
2019/02/05 Python
Python实现的IP端口扫描工具类示例
2019/02/15 Python
python利用itertools生成密码字典并多线程撞库破解rar密码
2019/08/12 Python
用Python爬取QQ音乐评论并制成词云图的实例
2019/08/24 Python
Python 生成VOC格式的标签实例
2020/03/10 Python
基于Python脚本实现邮件报警功能
2020/05/20 Python
python基于exchange函数发送邮件过程详解
2020/11/06 Python
德国内衣、泳装和睡衣网上商店:Bigsize Dessous
2018/07/09 全球购物
比利时家具购买网站:Home24
2019/01/03 全球购物
学习雷锋精神演讲稿
2014/05/10 职场文书
Pytorch可视化的几种实现方法
2021/06/10 Python
python使用pymysql模块操作MySQL
2021/06/16 Python
Android实现图片九宫格
2022/06/28 Java/Android