php带密码功能并下载远程文件保存本地指定目录 修改加强版


Posted in PHP onMay 16, 2010

php带密码功能并下载远程文件保存本地指定目录 修改加强版
原作者BlueStyle 提示 改进地方有

以前的算法是等文件下载完才计算,
现在这个直接在在获取文件时候就计算大小
加了容错语句
增加了判断目录,没有目录自动创建
把计算文件大小的算法换了个
以前的那个光计算文件大小就7行代码,
现在这个只要两行

转载请保留原作者版权信息,由于作者是政府人员,为不惹麻烦,请保留此段文字完整性
html代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<HTML> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>快乐飞扬博客 - 远程文件下载</title> 
</head> 
<body > 
<form method="post"> 
<li>File: <input name="url" size="40" /> 
<input name="submit" type="submit" /></li> 
<li>Pass: <input name="password" type="password" /></li> 
</form>

PHP代码:
<?php 
# Copyright 2010 快乐飞扬 
# http://www.klfy.org/ 供新手学习参考 
set_time_limit (0); //不限时 24 * 60 * 60 
$password = 'admin'; //管理密码 
$pass = $_POST['password']; 
if ($pass == $password) { 
class runtime { 
var $StartTime = 0; 
var $StopTime = 0; 
function get_microtime(){list($usec, $sec) = explode(' ', microtime()); 
return ((float)$usec + (float)$sec);} 
function start() {$this->StartTime = $this->get_microtime();} 
function stop() {$this->StopTime = $this->get_microtime();} 
function spent() { return round(($this->StopTime - $this->StartTime) * 1000, 1);} 
} 
$runtime= new runtime; 
$runtime->start(); 
if (!isset($_POST['submit'])) die(); 
$destination_folder = './Download/'; // 下载的文件保存目录。必须以斜杠结尾 
if(!is_dir($destination_folder)) //判断目录是否存在 
mkdir($destination_folder,0777); //若无则创建,并给与777权限 windows忽略 
$url = $_POST['url']; 
$headers = get_headers($url, 1); //得到文件大小 
if ((!array_key_exists("Content-Length", $headers))) {$filesize=0; } 
$newfname = $destination_folder . basename($url); 
$file = fopen ($url, "rb"); 
if ($file) { 
$newf = fopen ($newfname, "wb"); 
if ($newf) 
while(!feof($file)) {fwrite($newf, fread($file, 1024 * 8 ), 1024 * 8 );} 
} 
if ($file) {fclose($file);} 
if ($newf) {fclose($newf);} 
$runtime->stop(); 
echo '<br /><li>下载耗时:<font color="blue"> '.$runtime->spent().' </font>微秒,文件大小<font color="blue"> '.$headers["Content-Length"].' </font>字节</li>'; 
echo '<br /><li><font color="red">下载成功! '.$showtime=date("Y-m-d H:i:s").'</font></li>'; 
}elseif(isset($_POST['password'])){ 
echo '<br /><li><font color="red">密码错误!请从新输入密码!</font></li>'; 
} 
?> 
</body> 
</html>
PHP 相关文章推荐
php数组函数序列之in_array() 查找数组值是否存在
Oct 29 PHP
如何在PHP中使用正则表达式进行查找替换
Jun 13 PHP
PHP函数microtime()用法与说明
Dec 04 PHP
解决cPanel无法安装php5.2.17
Jun 22 PHP
php的mkdir()函数创建文件夹比较安全的权限设置方法
Jul 28 PHP
PHP函数超时处理方法
Feb 14 PHP
Zend Framework教程之Zend_Db_Table表关联实例详解
Mar 23 PHP
微信自定义分享php代码分析
Nov 24 PHP
PHP编程 SSO详细介绍及简单实例
Jan 13 PHP
Yii CDBCriteria常用方法实例小结
Jan 19 PHP
ThinkPHP实现附件上传功能
Apr 27 PHP
thinkphp5框架扩展redis类方法示例
May 06 PHP
ezSQL PHP数据库操作类库
May 16 #PHP
php 提速工具eAccelerator 配置参数详解
May 16 #PHP
php date()日期时间函数详解
May 16 #PHP
php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
May 16 #PHP
PHP下打开URL地址的几种方法小结
May 16 #PHP
让PHP支持断点续传的源码
May 16 #PHP
php 获取一个月第一天与最后一天的代码
May 16 #PHP
You might like
超强分页类2.0发布,支持自定义风格,默认4种显示模式
2007/01/02 PHP
三个类概括PHP的五种设计模式
2012/09/05 PHP
解析php框架codeigniter中如何使用框架的session
2013/06/24 PHP
Laravel学习教程之View模块详解
2017/09/18 PHP
用JavaScript隐藏控件的方法
2009/09/21 Javascript
js形成页面的一种遮罩效果实例代码
2014/01/04 Javascript
JavaScript字符串对象的concat方法实例(用于连接两个或多个字符串)
2014/10/16 Javascript
程序员必知35个jQuery 代码片段
2015/11/05 Javascript
基于Bootstrap重置输入框内容按钮插件
2016/05/12 Javascript
Node.js返回JSONP详解
2016/05/18 Javascript
浅谈jQuery this和$(this)的区别及获取$(this)子元素对象的方法
2016/11/29 Javascript
js+canvas实现动态吃豆人效果
2017/03/22 Javascript
Vue form 表单提交+ajax异步请求+分页效果
2017/04/22 Javascript
vue.js 使用v-if v-else发现没有执行解决办法
2017/05/15 Javascript
jQuery为某个div加入行样式
2017/06/09 jQuery
vue组件开发之用户无限添加自定义填写表单的方法
2018/08/28 Javascript
vue表单自定义校验规则介绍
2018/08/28 Javascript
React如何解决fetch跨域请求时session失效问题
2018/11/02 Javascript
详解一个基于react+webpack的多页面应用配置
2019/01/21 Javascript
[04:28]2014DOTA2国际邀请赛 采访小兔子LGD挺进钥匙体育馆
2014/07/14 DOTA
[42:27]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第三局
2016/03/05 DOTA
Python英文文本分词(无空格)模块wordninja的使用实例
2019/02/20 Python
python中设置超时跳过,超时退出的方式
2019/12/13 Python
pytorch-神经网络拟合曲线实例
2020/01/15 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
2020/02/23 Python
django的autoreload机制实现
2020/06/03 Python
html5设计原理(推荐收藏)
2014/05/17 HTML / CSS
巴西家用小家电购物网站:Polishop
2016/08/07 全球购物
芬兰攀岩、山地运动和户外活动用品购物网站:Bergfreunde
2016/10/06 全球购物
微电影大赛策划方案
2014/06/05 职场文书
工作作风承诺书
2014/08/30 职场文书
贯彻落实“八项规定”思想汇报
2014/09/13 职场文书
2014年乡镇领导个人整改措施
2014/09/19 职场文书
在校大学生才艺比赛策划书怎么写?
2019/08/26 职场文书
Java生成日期时间存入Mysql数据库的实现方法
2022/03/03 Java/Android
Python数据处理的三个实用技巧分享
2022/04/01 Python