不用数据库的多用户文件自由上传投票系统(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 相关文章推荐
二十行语句实现从Excel到mysql的转化
Oct 09 PHP
php Memcache 中实现消息队列
Nov 24 PHP
常用的PHP数据库操作方法(MYSQL版)
Jun 08 PHP
谨慎使用PHP的引用原因分析
Sep 06 PHP
解析php如何将日志写进syslog
Jun 28 PHP
php制作unicode解码工具(unicode编码转换器)代码分享
Dec 24 PHP
国产PHP开发框架myqee新手快速入门教程
Jul 14 PHP
2014年最新推荐的10款 PHP 开发框架
Aug 01 PHP
php模拟登陆的实现方法分析
Jan 09 PHP
php简单实现屏蔽指定ip段用户的访问
Apr 29 PHP
CodeIgniter辅助之第三方类库third_party用法分析
Jan 20 PHP
PHP数组的定义、初始化和数组元素的显示实现代码
Nov 05 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
UCenter中的一个可逆加密函数authcode函数代码
2010/07/20 PHP
ThinkPHP实现将SESSION存入MYSQL的方法
2014/07/22 PHP
PHP中生成UUID自定义函数分享
2015/06/10 PHP
详解php实现页面静态化原理
2017/06/21 PHP
用javascript来实现动画导航效果的代码
2007/12/16 Javascript
LazyForm jQuery plugin 定制您的CheckBox Radio和Select
2009/10/24 Javascript
JavaScript 一行代码,轻松搞定浮动快捷留言-V2升级版
2010/04/02 Javascript
js中字符替换函数String.replace()使用技巧
2011/08/14 Javascript
checkbox设置复选框的只读效果不让用户勾选
2013/08/12 Javascript
js判断选择时间不能小于当前时间的示例代码
2013/09/24 Javascript
jquery showModelDialog的使用方法示例详解
2013/11/19 Javascript
JS延时提示框实现方法详解
2015/11/26 Javascript
JavaScript数据类型学习笔记分享
2016/09/01 Javascript
angularjs实现文字上下无缝滚动特效代码
2016/09/04 Javascript
jQuery简单创建节点的方法
2016/09/09 Javascript
ES6新特性之变量和字符串用法示例
2017/04/01 Javascript
详解vue axios中文文档
2017/09/12 Javascript
Vue项目全局配置微信分享思路详解
2018/05/04 Javascript
Nodejs实现爬虫抓取数据实例解析
2018/07/05 NodeJs
Vue实现按钮级权限方案
2019/11/21 Javascript
vue 判断两个时间插件结束时间必选大于开始时间的代码
2020/11/04 Javascript
[01:03:31]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第二局
2016/02/26 DOTA
[01:02]DOTA2上海特锦赛SHOWOPEN
2016/03/25 DOTA
python多线程方式执行多个bat代码
2016/06/07 Python
解决python selenium3启动不了firefox的问题
2018/10/13 Python
Pycharm创建项目时如何自动添加头部信息
2019/11/14 Python
Django框架配置mysql数据库实现过程
2020/04/22 Python
使用CSS3的box-sizing属性解决div宽高被内边距撑开的问题
2016/06/28 HTML / CSS
法国最大的在线眼镜店:EasyLunettes
2019/08/26 全球购物
俄罗斯在线手表和珠宝商店:AllTime
2019/09/28 全球购物
linux面试题参考答案(9)
2015/01/07 面试题
最新的咖啡店创业计划书
2013/12/30 职场文书
学生逃课检讨书1000字
2014/10/20 职场文书
先进教师个人事迹材料
2014/12/15 职场文书
Golang标准库syscall详解(什么是系统调用)
2021/05/25 Golang
如何使用SQL Server语句创建表
2022/04/12 SQL Server