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

  这是本系统的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>