PHP实现文件安全下载

你一定会笑我"下载文件"如此简单都值得说?当然并不是想象那么简单。例如你希望客户要填完一份表格,才可以下载某一文件,你第一个想法一定是用 "Redirect"的方法,先检查表格是否已经填写完毕和完整,然后就将网址指到该文件,这样客户才能下载,但如果你想做一个关于"网上购物"的电子商务网站,考虑安全问题,你不想用户直接复制网址下载该文件,笔者建议你使用PHP直接读取该实际文件然后下载的方法去做。程序如下:

$file_name = "info_check.exe";
$file_dir = "/public/www/download/";
if (!file_exists($file_dir . $file_name)) { //检查文件是否存在
echo "文件找不到";
exit;
} else {
$file = fopen($file_dir . $file_name,"r"); // 打开文件
// 输入文件标签
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length: ".filesize($file_dir . $file_name));
Header("Content-Disposition: attachment; filename=" . $file_name);
// 输出文件内容
echo fread($file,filesize($file_dir . $file_name));
fclose($file);
exit;}

而如果文件路径是"http" 或者 "ftp" 网址的话,则源代码会有少许改变,程序如下:

$file_name = "info_check.exe";
$file_dir = "http://www.easycn.net/";
$file = @ fopen($file_dir . $file_name,"r");
if (!$file) {
echo "文件找不到";
} else {
Header("Content-type: application/octet-stream");
Header("Content-Disposition: attachment; filename=" . $file_name);
while (!feof ($file)) {
echo fread($file,50000);
}
fclose ($file);
}

这样就可以用PHP直接输出文件了。

(0)

相关推荐

  • PHP实现文件安全下载

    你一定会笑我"下载文件"如此简单都值得说?当然并不是想象那么简单.例如你希望客户要填完一份表格,才可以下载某一文件,你第一个想法一定是用 "Redirect"的方法,先检查表格是否已经填写完毕和完整,然后就将网址指到该文件,这样客户才能下载,但如果你想做一个关于"网上购物"的电子商务网站,考虑安全问题,你不想用户直接复制网址下载该文件,笔者建议你使用PHP直接读取该实际文件然后下载的方法去做.程序如下: $file_name = "in

  • PHP实现下载功能的代码

    wzskynet#163.com ·php escapeshellcmd多字节编码漏洞 ·详细讲解PHP中缓存技术的应用 ·利用PHP V5开发多任务应用程序 ·详细解析 PHP 向 MySQL 发送数据过程 ·PHP实现静态发布的方法浅谈 你一定会笑我"下载文件"如此简单都值得说?当然并不是想你想象的那么简单.例如你希望客户要填完一份表格,才可以下载某一文件,你第一个想法一定是用 "Redirect"的方法,先检查表格是否已经填写完毕和完整,然后就将网址指到该文件

  • Mac系统下MySql下载MySQL5.7及详细安装图解

    一.在浏览器当中输入以下地址 https://dev.mysql.com/downloads/mysql/ 二.进入以下界面:直接点击下面位置 ,选择跳过登录 点过这后直接下载. 三.下载完成后, 直接双击打开,弹出以下界面,再继续点击即可 下面 一直点继续,和正学安装其它软件一样 四.启动MySQL 安装完毕后,到设置当中查看以下选项,如果里面有MySQL说明已经安装成功 点击后, 启动MySQL 五.修改数据库密码 启动完成后,打开终端 aliasmysql=/usr/local/mysql

  • mysql 5.7.20常用下载、安装和配置方法及简单操作技巧(解压版免安装)

    话说凌晨刚折腾完一台MySQL 5.7.19版本的安装,未曾料到早上MySQL官方就发布了最新的5.7.20版本.这个版本看似更新不多,但是加入了一个我们所急需的功能. MySQL 5.7.20版本新增了参数group-replication-member-weight,用来表示选主时服务器的优先级.若没有这个优先级,则之前版本的MGR会选择一个或许不是用户想要的节点,这是一个令人头疼的问题.相信5.7.20版本新增的该参数能解决一些用户的痛点. 1. 下载: mysql-5.7.20是解压版免

  • Mysql 5.7.20压缩版下载和安装简易教程

    一.下载地址: http://dev.mysql.com/downloads/mysql/ http://www.jb51.net/softs/451120.html 1.进入官网下载,显示的应该是最新版本,选择第二个(mysql5.7.20-winx64.zip) 2.下载完成后,直接解压到自定义目录,解压目录就是安装目录 二.配置环境变量 1.新增环境变量,例: 变量名:MYSQL_HOME 变量值:D:\mysql\mysql5.7.20-winx64 2.修改环境变量PATH 在PATH

  • windows下定时利用bat脚本实现ftp上传下载

    前言: 工作中可能会遇到以下情况,利用windows作为中转,来实现两台linux服务器的文件传输. 实现步骤: 1.FTP上传和下载的bat脚本. 脚本分为两部分:可执行bat脚本和ftp命令文件: 可执行bat脚本: @echo off ftp -s:D:\ftp\ftp.txt ftp命令ftp.txt: open 192.168.1.166 ftp-user passwd prompt off lcd D:\ftp cd /home/myftp mget * close open 10.

  • 传世版史无前例的脚本,外挂下载。

    了好东西就要分享,这个脚本模板是我珍藏了N久的了,本来不想拿出来,但是 最近有很多朋友都在为脚本发愁,而且再为了这个号专门做个脚本也太费事了,所以我在这把这个智能无敌脚本发上来,供大家参考.虽然和呈呈脚本有些相似,但是功能又要比呈呈脚本要多点,嘿嘿,这些具体的要看各个朋友们根据自己的爱好来选了. 本帖另外还为大家帖了个破解版的<传家宝> 注:虽然这个脚本是智能.无敌类的脚本,但是盛大现在对于NPC对话这方面的对话经常改,所以用这些脚本的时候,要经常看看NPC对话这块有问题没有. 文件下载后解压

  • Seraph sp脚本运行软件下载

    - 6.28修正了6.27中的一个验证方面的错误.感谢天天脚本的帮助.向受影响的用户道歉! - 修正了在函数内的DIM语句赋初值时没有正常赋值的问题 - 加入一些加密元素,进一步提高网络验证脚本的安全性 - 改进了共享脚本打包流程的指导性 - 网络验证脚本新支持创建充值卡,供作者自由销售 为什么要用 Seraph ?  ◆因为他是免费的,而且永远免费.  ◆因为他不仅免费,而且强大.  ◆精确灵活的内存搜索函数,支持多数据项地址位移搜索,每秒搜索30M以上.  ◆增强的屏幕图像搜索功能,支持区域

  • SQL Server 2012 安装图解教程(附sql2012下载地址)

    在安装微软最新数据库SQL Server 2012之前,编者先确定一下安装环境:Windonws 7 SP1,32位操作系统.CPU是2.1GHz赛扬双核T3500,内存2.93GB. sql2012下载 http://www.jb51.net/softs/79861.html 安装SQL Server 2012的软硬件环境参数 根据微软的下载提示,32位的Windows 7操作系统,只需下载列表最下面的CHSx86SQLFULL_x86_CHS_Core.box. CHSx86SQLFULL_

  • SQL Server 2008 安装和配置图解教程(附官方下载地址)

    SQL Server 2008我们也能从中体验到很多新的特性,但是对于SQL Server 2008安装,还是用图来说话比较好.本文将从SQL Server 2008安装开始讲起. SQL Server 2008 简体中文正式版 下载地址 http://www.jb51.net/softs/43885.html 本来这篇是打算玩玩服务器功能中的第一个:adrms的,没想到装了几次都安装成功,但是有错误,后来没招了,打算将rms的数据库放到sql上来折腾折腾,所以为了不让大家觉得突兀,所以本篇SQ

随机推荐