不用数据库的多用户文件自由上传投票系统(2)

  •   2009-08-01/08:16
  • 这是本系统的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>

    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多