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

 更新时间:2010年05月16日 23:09:16   作者:  
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>

相关文章

  • THINKPHP内容分页代码分享

    THINKPHP内容分页代码分享

    这篇文章主要给大家分享了一段自用的THINKPHP内容分页代码,从本人项目中提取出来的,十分好用,这里推荐给小伙伴们。
    2015-01-01
  • PHP实现的AES双向加密解密功能示例【128位】

    PHP实现的AES双向加密解密功能示例【128位】

    这篇文章主要介绍了PHP实现的AES双向加密解密功能,结合实例形式分析了基于AES算法的加密解密类定义与使用技巧,需要的朋友可以参考下
    2018-09-09
  • PHP中的异常处理机制深入讲解

    PHP中的异常处理机制深入讲解

    这篇文章主要给大家介绍了关于PHP中异常处理机制的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • php使用strtotime技巧示例解惑

    php使用strtotime技巧示例解惑

    这篇文章主要为大家介绍了php使用strtotime技巧示例解惑,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • PHP 5.3.1 安装包 VC9 VC6不同版本的区别是什么

    PHP 5.3.1 安装包 VC9 VC6不同版本的区别是什么

    php官网提供了四个版本,VC9 x86 Non Thread Safe、VC9 x86 Thread Safe、VC6 x86 Non Thread Safe、VC6 x86 Thread Safe,大家看完这篇文章就知道应该选择什么样的版本了。
    2010-07-07
  • 非常实用的PHP常用函数汇总

    非常实用的PHP常用函数汇总

    这篇文章主要介绍了非常实用的PHP常用函数,汇总了加密解密、字符串操作、文件操作、SQL注入等函数的实例与用法说明,在PHP项目开发中非常具有实用价值,需要的朋友可以参考下
    2014-12-12
  • nginx下安装php7+php5

    nginx下安装php7+php5

    本文给大家分享的是在nginx下安装php7,并且实现与php5共存,非常的实用,有需要的小伙伴可以参考下
    2016-07-07
  • php设计模式 Adapter(适配器模式)

    php设计模式 Adapter(适配器模式)

    将一个类的接口转换成客户希望的另外一个接口,使用原本不兼容的而不能在一起工作的那些类可以在一起工作
    2011-06-06
  • php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例

    php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例

    这篇文章主要介绍了php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率,结合完整实例形式对比分析了php分别使用mysqli与pdo进行数据库插入操作的执行时间,需要的朋友可以参考下
    2019-05-05
  • PHP常用操作类之通信数据封装类的实现

    PHP常用操作类之通信数据封装类的实现

    PHP类的封装对于初学者来说是比较难懂的,下面这篇文章主要给大家介绍了关于PHP常用操作类之通信数据封装类实现的相关资料,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编一起来一起学习学习吧。
    2017-07-07

最新评论