不用数据库的多用户文件自由上传投票系统(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删除特定数组内容并且重建数组索引的方法.
Mar 25 PHP
探讨:web上存漏洞及原理分析、防范方法
Jun 29 PHP
6种php上传图片重命名的方法实例
Nov 04 PHP
destoon调用discuz论坛中带图片帖子的实现方法
Aug 21 PHP
推荐几款用 Sublime Text 开发 Laravel 所用到的插件
Oct 30 PHP
PHP中判断文件存在使用is_file还是file_exists?
Apr 03 PHP
PHP中trim()函数简单使用指南
Apr 16 PHP
php+jQuery递归调用POST循环请求示例
Oct 14 PHP
如何通过View::first使用Laravel Blade的动态模板详解
Sep 21 PHP
PHP htmlspecialchars() 函数实例代码及用法大全
Sep 18 PHP
PHP PDOStatement::bindParam讲解
Jan 30 PHP
php让json_encode不自动转义斜杠“/”的方法
Apr 27 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手册及PHP编程标准
2006/12/17 PHP
php调用mysql存储过程
2007/02/14 PHP
php去除换行(回车换行)的三种方法
2014/03/26 PHP
Laravel 5框架学习之表单
2015/04/08 PHP
php生成图片验证码
2015/06/09 PHP
PHP进行批量任务处理不超时的解决方法
2016/07/11 PHP
COM中获取JavaScript数组大小的代码
2009/11/22 Javascript
JS 事件绑定函数代码
2010/04/28 Javascript
动态载入/删除/更新外部 JavaScript/Css 文件的代码
2010/07/03 Javascript
JavaScript 字符串处理函数使用小结
2010/12/02 Javascript
javascript操作符&quot;!~&quot;详解
2015/02/10 Javascript
基于jquery实现放大镜效果
2015/08/17 Javascript
你知道setTimeout是如何运行的吗?
2016/08/16 Javascript
利用jquery实现瀑布流3种案例
2016/09/18 Javascript
Ionic+AngularJS实现登录和注册带验证功能
2017/02/09 Javascript
浅谈Node.js 中间件模式
2018/06/12 Javascript
vue-router动态设置页面title的实例讲解
2018/08/30 Javascript
创建Vue项目以及引入Iview的方法示例
2018/12/03 Javascript
JS开发自己的类库实例分析
2019/08/28 Javascript
JavaScript this在函数中的指向及实例详解
2019/10/14 Javascript
vue中渲染对象中属性时显示未定义的解决
2020/07/31 Javascript
Python 不同对象比较大小示例探讨
2014/08/21 Python
Python机器学习算法之k均值聚类(k-means)
2018/02/23 Python
python判断设备是否联网的方法
2018/06/29 Python
Selenium的使用详解
2018/10/19 Python
Python urllib2运行过程原理解析
2020/06/04 Python
Python第三方库安装缓慢的解决方法
2021/02/06 Python
野兽派官方旗舰店:THE BEAST 野兽派
2016/08/05 全球购物
计算s=f(f(-1.4))的值
2014/05/06 面试题
应届生船舶驾驶求职信
2013/10/19 职场文书
室内设计专业个人的自我评价
2013/10/19 职场文书
幼儿园英语教学反思
2014/01/30 职场文书
企业总经理职责
2014/02/02 职场文书
优秀士兵先进事迹
2014/02/06 职场文书
党员理论学习心得体会
2016/01/21 职场文书
电工生产实习心得体会
2016/01/22 职场文书