不用数据库的多用户文件自由上传投票系统(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 相关文章推荐
动态网站web开发 PHP、ASP还是ASP.NET
Oct 09 PHP
同一空间绑定多个域名而实现访问不同页面的PHP代码
Dec 06 PHP
PHP编码规范-php coding standard
Mar 16 PHP
PHP 数据库树的遍历方法
Feb 06 PHP
基于PHP Socket配置以及实例的详细介绍
Jun 13 PHP
CMS中PHP判断系统是否已经安装的方法示例
Jul 26 PHP
自己写的兼容低于PHP 5.5版本的array_column()函数
Oct 24 PHP
PHP技术开发微信公众平台
Jul 22 PHP
PHP/HTML混写的四种方式总结
Feb 27 PHP
PHP简单实现合并2个数字键数组值的方法
May 30 PHP
php使用redis的几种常见操作方式和用法示例
Feb 20 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
Mar 26 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如何通过传引用的思想实现无限分类(代码简单)
2015/10/13 PHP
PHP7多线程搭建教程
2017/04/21 PHP
PHP实现二维数组中的查找算法小结
2018/06/09 PHP
PHP8.0新功能之Match表达式的使用
2020/07/19 PHP
正则表达式中特殊符号及正则表达式的几种方法总结(replace,test,search)
2013/11/26 Javascript
回车直接实现点击某按钮的效果即触发单击事件
2014/02/27 Javascript
javascript 数组操作详解
2015/01/29 Javascript
JavaScript的Date()方法使用详解
2015/06/09 Javascript
js淡入淡出焦点图幻灯片效果代码分享
2015/09/08 Javascript
Angularjs中如何使用filterFilter函数过滤
2016/02/06 Javascript
Layui事件监听的实现(表单和数据表格)
2019/10/17 Javascript
layui table 复选框跳页后再回来保持原来选中的状态示例
2019/10/26 Javascript
[14:25]教你分分钟做大人:主宰(HEROS)
2014/12/08 DOTA
完美解决Pycharm无法导入包的问题 Unresolved reference
2018/05/18 Python
使用python serial 获取所有的串口名称的实例
2019/07/02 Python
Python中最好用的命令行参数解析工具(argparse)
2019/08/23 Python
python 字典的打印实现
2019/09/26 Python
tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T
2020/06/22 Python
Python实现LR1文法的完整实例代码
2020/10/25 Python
selenium携带cookies模拟登陆CSDN的实现
2021/01/19 Python
移动端rem布局的两种实现方法
2018/01/03 HTML / CSS
canvas 阴影和图形变换的示例代码
2018/01/02 HTML / CSS
Glamest意大利:女性在线奢侈品零售店
2019/04/28 全球购物
毕业生的自我鉴定
2013/10/29 职场文书
自我评价的写作规则
2014/01/06 职场文书
学生干部的自我评价分享
2014/01/18 职场文书
3.12植树节活动总结2014
2014/03/13 职场文书
2014年度安全生产目标管理责任书
2014/07/25 职场文书
学校政风行风评议心得体会
2014/10/21 职场文书
房产公证书样本
2015/01/23 职场文书
2015年发展党员工作总结报告
2015/03/31 职场文书
2015年社区居委会工作总结
2015/05/18 职场文书
2015法院个人工作总结范文
2015/05/25 职场文书
电影红河谷观后感
2015/06/11 职场文书
Go语言设计模式之结构型模式
2021/06/22 Golang
Django对接elasticsearch实现全文检索的示例代码
2021/08/02 Python