不用数据库的多用户文件自由上传投票系统(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
Mysql和网页显示乱码解决方法集锦
Mar 27 PHP
php 8小时时间差的解决方法小结
Dec 22 PHP
php 文件上传类代码
Aug 06 PHP
Smarty局部缓存的几种方法简介
Jun 17 PHP
PHP学习笔记(二) 了解PHP的基本语法以及目录结构
Aug 04 PHP
/etc/php-fpm.d/www.conf 配置注意事项
Feb 04 PHP
thinkphp Apache配置重启Apache1 restart 出错解决办法
Feb 15 PHP
PHP Laravel 上传图片、文件等类封装
Aug 16 PHP
PHP基于mcript扩展实现对称加密功能示例
Feb 21 PHP
PHP如何防止用户重复提交表单
Dec 09 PHP
php中array_fill函数的实例用法
Mar 02 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 JSON 数据解析代码
2010/05/26 PHP
几种有用的变型 PHP中循环语句的用法介绍
2012/01/30 PHP
php写入、删除与复制文件的方法
2015/06/20 PHP
浅谈mysql_query()函数的返回值问题
2016/09/05 PHP
让网页根据不同IE版本显示不同的内容
2009/02/08 Javascript
js 动态文字滚动的例子
2011/01/17 Javascript
js 判断上传文件大小及格式代码
2013/11/13 Javascript
利用原生JavaScript获取元素样式只是获取而已
2014/10/08 Javascript
JavaScript中的call方法和apply方法使用对比
2015/08/12 Javascript
js判断上传文件后缀名是否合法
2016/01/28 Javascript
animate 实现滑动切换效果【实例代码】
2016/05/05 Javascript
JS HTML5拖拽上传图片预览
2016/07/18 Javascript
Angularjs 制作购物车功能实例代码
2016/09/14 Javascript
JS 实现随机验证码功能
2017/02/15 Javascript
分享一道关于闭包、bind和this的面试题
2017/02/20 Javascript
微信小程序 UI与容器组件总结
2017/02/21 Javascript
JQuery中Ajax的操作完整例子
2017/03/07 Javascript
详解Vue Elementui中的Tag与页面其它元素相互交互的两三事
2018/09/25 Javascript
vue实现Excel文件的上传与下载功能的两种方式
2019/06/28 Javascript
详解基于Wepy开发小程序插件(推荐)
2019/08/01 Javascript
JavaScript实现移动端带transition动画的轮播效果
2020/03/24 Javascript
vue内置组件component--通过is属性动态渲染组件操作
2020/07/28 Javascript
使用Python的Bottle框架写一个简单的服务接口的示例
2015/08/25 Python
Python简单获取网卡名称及其IP地址的方法【基于psutil模块】
2018/05/24 Python
Python查找第n个子串的技巧分享
2018/06/27 Python
利用python和ffmpeg 批量将其他图片转换为.yuv格式的方法
2019/01/08 Python
深入浅析Python 中 is 语法带来的误解
2019/05/07 Python
简单了解python shutil模块原理及使用方法
2020/04/28 Python
Python获取浏览器窗口句柄过程解析
2020/07/25 Python
python中turtle库的简单使用教程
2020/11/11 Python
《小儿垂钓》教学反思
2014/02/23 职场文书
求职信结尾怎么写
2014/05/26 职场文书
三好学生主要事迹怎么写
2015/11/03 职场文书
医院岗前培训心得体会
2016/01/08 职场文书
django中websocket的具体使用
2022/01/22 Python
如何利用golang运用mysql数据库
2022/03/13 Golang