不用数据库的多用户文件自由上传投票系统(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的类 功能齐全的发送邮件类
Oct 09 PHP
php上传文件的增强函数
Jul 21 PHP
php下通过IP获取地理位置的代码(小偷程序)
Jun 09 PHP
PHP读取文件并可支持远程文件的代码分享
Oct 03 PHP
ThinkPHP实现批量删除数据的代码实例
Jul 02 PHP
php显示指定目录下子目录的方法
Mar 20 PHP
php需登录的文件上传管理系统
Mar 21 PHP
Zend Framework缓存Cache用法简单实例
Mar 19 PHP
php mysql 封装类实例代码
Sep 18 PHP
PHP Mysqli 常用代码集合
Nov 12 PHP
php中final关键字用法分析
Dec 07 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
Dec 21 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
javascript的键盘控制事件说明
2008/04/15 Javascript
js 深拷贝函数
2008/12/04 Javascript
JavaScript中通过闭包解决只能取得包含函数中任何变量最后一个值的问题
2010/08/12 Javascript
javascript+xml实现简单图片轮换(只支持IE)
2012/12/23 Javascript
js实现屏蔽默认快捷键调用自定义事件示例
2013/06/18 Javascript
jquery select多选框的左右移动 具体实现代码
2013/07/03 Javascript
IE下写xml文件的两种方式(fso/saveAs)
2013/08/05 Javascript
JQuery分别取得每行最后一列和最后一行的示例代码
2013/08/18 Javascript
jquery easyui combobox模糊过滤(示例代码)
2013/11/30 Javascript
js实现div闪烁原理及实现代码
2014/06/24 Javascript
简述JavaScript的正则表达式中test()方法的使用
2015/06/16 Javascript
JS基于VML技术实现的五角星礼花效果代码
2015/10/26 Javascript
js密码强度校验
2015/11/10 Javascript
Flow之一个新的Javascript静态类型检查器
2015/12/21 Javascript
表单中单选框添加选项和移除选项
2016/07/04 Javascript
真正好用的js验证上传文件大小的简单方法
2016/10/27 Javascript
深入理解Javascript中的作用域链和闭包
2017/04/25 Javascript
微信小程序 实现动态显示和隐藏某个控件
2017/04/27 Javascript
Vue安装浏览器开发工具的步骤详解
2019/05/12 Javascript
基于nodejs的微信JS-SDK简单应用实现
2019/05/21 NodeJs
webgl实现物体描边效果的方法介绍
2019/11/27 Javascript
python 字符串split的用法分享
2013/03/23 Python
浅谈Python2.6和Python3.0中八进制数字表示的区别
2017/04/28 Python
详解pyqt5 动画在QThread线程中无法运行问题
2018/05/05 Python
Python3获取电脑IP、主机名、Mac地址的方法示例
2019/04/11 Python
python 使用pygame工具包实现贪吃蛇游戏(多彩版)
2019/10/30 Python
python 的numpy库中的mean()函数用法介绍
2020/03/03 Python
详解如何用HTML5 Canvas API控制图片的缩放变换
2016/03/22 HTML / CSS
AmazeUI 按钮交互的实现示例
2020/08/24 HTML / CSS
文秘专业大学生求职信
2013/11/10 职场文书
生产厂长岗位职责
2014/02/21 职场文书
教堂婚礼主持词
2014/03/14 职场文书
同志主要表现材料
2014/08/21 职场文书
党员活动总结
2015/02/04 职场文书
小学教师求职信范文
2015/03/20 职场文书
担保贷款承诺书
2015/04/30 职场文书