不用数据库的多用户文件自由上传投票系统(2)
2023-06-13 09:13:44 时间
这是本系统的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")ordie("对不起该投票不合法".$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")ordie("出现错误".$goback);
fwrite($fp,$ipinfo);
fclose($fp);
$firstdown=0;//第一次下载
}
else{
$firstdown=1;//不是第一次下载
$ipinfo=$ipinfo.$REMOTE_ADDR.":".$num.":".$abstime."|";
$fp=@fopen($ipfile,"w")ordie("出现错误".$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")ordie("对不起不合法".$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><metahttp-equiv="refresh"content="3;URL=".$filepath."">";
echo"<linkrel="stylesheet"href="../css/eccct.css"></head>";
echo"<bodyclass=tb>";
echo"<div>";
echo"<br><br><br>";
echo"<divclass="values">您的浏览器会在三秒钟后自动下载</div>";
echo"<br><br><br>";
echo"<divclass="values">或者点击<ahref="".$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:PHP3GeneratedData
?>
</html>
<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")ordie("对不起该投票不合法".$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")ordie("出现错误".$goback);
fwrite($fp,$ipinfo);
fclose($fp);
$firstdown=0;//第一次下载
}
else{
$firstdown=1;//不是第一次下载
$ipinfo=$ipinfo.$REMOTE_ADDR.":".$num.":".$abstime."|";
$fp=@fopen($ipfile,"w")ordie("出现错误".$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")ordie("对不起不合法".$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><metahttp-equiv="refresh"content="3;URL=".$filepath."">";
echo"<linkrel="stylesheet"href="../css/eccct.css"></head>";
echo"<bodyclass=tb>";
echo"<div>";
echo"<br><br><br>";
echo"<divclass="values">您的浏览器会在三秒钟后自动下载</div>";
echo"<br><br><br>";
echo"<divclass="values">或者点击<ahref="".$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:PHP3GeneratedData
?>
</html>
相关文章
- html文件怎么转换成word文件_word转换成网页文件格式不对
- 【说站】NodeJS检测文件的方法
- 腾讯云cos获取文件操作实践--Go SDK
- 【Android 逆向】ART 脱壳 ( DexClassLoader 脱壳 | oat_file_assistant.cc 中涉及的 oat 文件生成流程 )
- 数据库开发知识:SpringBoot 怎么集成MongoDB实现文件上传功能
- SQLServer 错误 3619 由于日志空间用尽,无法在数据库 ID %d 中写入检查点记录。 请与数据库管理员联系,截断日志或为数据库日志文件分配更多空间。 故障 处理 修复 支持远程
- 指令给文件赋予777权限:Linux r 777指令实战(linux-r777)
- Linux:编辑文件内容的步骤(linux编辑文件内容)
- Linux快捷拷贝多个文件的方法(linux拷贝多个文件)
- 脚本编写 Linux 下 FTP 脚本:一键整理文件及文件夹(linux编写ftp)
- Linux文件类型:一探究竟(linux文件的类型)
- 导入深入探索MSSQL文件导入的精妙之处(数据库mssql文件)
- 数据库利用SQL文件建立MSSQL数据库的步骤(sql文件建立mssql)
- MySQL数据库文件遗失:如何恢复(mysql数据库文件丢失)
- Bak文件如何快速导入MySQL数据库(bak导入mysql)
- ctl文件简易快速的Oracle数据库导入方法(ctl 导入oracle)
- KML文件导入Oracle数据库实现空间数据高效管理(kml 导入oracle)
- JAR文件无法连接到Oracle数据库(jar连不上oracle)
- Oracle数据库 文件上传技术实现(oracle 上传语句)
- 不用数据库的多用户文件自由上传投票系统(3)
- java遍历properties文件操作指南
- SQLServer误区30日谈第9天数据库文件收缩不会影响性能