为什么上论坛时,会自动下载php后缀的文件
可能是那个论坛没有安装支持php格式的网页的服务器,也或者他的服务器出问题了。php是一种网页格式,就和普通的html一样,只是html更多的是静态的网页,也就是不能网站和用户之间的动态操作,比如登录啊,留言啊什么。而Php是当下比较流行的一种动态网页格式。自己制作这个格式的网页的时候需要会Php脚本语言,还要安装apache服务器和php程序,还有一些配置。这些都具备了,并且服务器配置也成功了,你就可以把自己的php网页在浏览器显示出来了。如果你自己开发php网页,那么apache服务器会提供一个你制作的php网页的根目录,也就是你把你做的网页需要放到这个根目录中去,然后再把你做的网页的首页,也就是你让用户看到的第一个网页名字起成indexphp,比如你的apache服务器提供的根目录名字叫htdocs,也就是有一个叫做htdocs的文件夹,你把你的indexphp文件放到htdocs文件夹,然后再在服务器输入一个地址,通常是"localhost"把这个放到浏览器地址栏就可以看到你的网页了,如果你的文件放到htdocs文件夹中的a文件夹中你就要在浏览器中写localhost/a然后你的网页就出来了,也或者你可以写localhost/indexphp或者localhost/a/indexphp。服务器会把名字叫做index的网页当成默认的主页显示,所以,你不写indexphp的时候,服务器也会自动找到这个文件。可是如果你的服务器没有配置好,那么就会出现逆看到的情况,浏览器就把php文件当成一个普通的文件下载下来。如果你又一定的html基础就会知道,最简单的下载方法就是在网页中直接写连接到要下载的文件。比如,你做一个html网页,要让他能够下载一个你提供的叫做voidemp3的文件,并且你的这个文件放到了服务器根目录下也就是htdocs文件夹中,那么,因为你主页面也在这个文件夹下,和这个voidemp3同级,所以你的html中的下载链接就可以写成“<a href="voidemp3">下载链接</a>”这样你的页面就会有一个叫做“下载链接”的链接,然后用户点他的时候就会下载你的voidemp3。如果你的voidemp3放到根目录的a文件夹下,那么链接就写成“<a href="/a/voidemp3">下载链接</a>”这个样子,效果和上面是一样的,因为服务器没有配置好或者是服务器出了问题,浏览器就把php文件当成了一个下载链接给下载了。
可以利用post方式提交表单,将文件上传到服务器上即可。上传到服务器的文件会存在临时目录下,然后利用move_uploaded_file函数可以将文件另存到其他目录进行永久保存,如果不另存,请求返回之后该临时文件就会删除,在服务器上再也找不到,如果需要该文件就需要重新上传。 另外,php是服务器端语言,是网页浏览的结果提交到服务器之后,服务器调用php进行处理。浏览器端请使用JavaScript语言处理上传前的操作。另外,由于安全性考虑,JavaScript是不能够读取用户硬盘上的数据的,不然你知道后果,任何一家网站都可以搞到你硬盘上的资料,就没有隐私可言了。 所以呢,还是将文件利用表单提交的方式上传到服务器,服务器端怎么处理,用什么处理都随你,php,python,c++都可以在服务器端处理了,毕竟传到服务器就是服务器的资源了。 页面文件上你可以用input标签浏览选择本地的文件,然后submit就能够上传文件。这是一个基本技术点,请你专门花点时间弄懂吧。
首先。需要运行PHP的环境。建议搜索一个PHP全套安装包。推荐:VertrigoServ、Phpnow等。安装步骤很简单。根据提示安装即可。
然后。既然你要学习PHP。那么编辑工具是必须的。现在公认最强大的编辑软件是Zend Studio
Zend Studio是当今最伟大的PHP集成开发环境
Zend Studio包括了PHP开发所有必须的部件,通过一整套编辑、调试、分析、优化和数据库工具,使用Zend Studio 缩短了开发周期,并简化了复杂的应用方案,无容置疑,其已经是当今世上最强大的PHP集成开发环境。
Zend Studio的强大之处,除了一般编辑器所具有的代码高亮,语法自动缩进,书签功能外,它内置的调试器更是无可挑剔,支持本地和远程(debug server)两种调试模式,支持诸如跟踪变量、单步运行、断点、堆栈信息、函数调用、查看实时输出等多种高级调试功能。另外,最新版(Zend Studio 551)对中文的支持也是非常稳定的。
Zend Studio 下载
ZendStudio 551 官方http下载地址:
http://wwwzendstudionet/post/111/
Zend Studio 60官方下载地址:
http://wwwzendstudionet/Zend_Studio-for-Eclipse-v6_0-download/
Zend Studio 601官方下载地址:
http://wwwzendstudionet/post/138/
Zend Studio 61(目前的最新版本)官方下载地址:
http://wwwzendstudionet/zend_studio-6_1/
Zend Studio 注册机
这里提供的全部是在线注册机,其最大的特点是无需下载,直接在线生成,跨平台,跨浏览器,几乎没有任何限制。
Zend Studio 5x 在线注册机:http://wwwzendstudionet/libs/zendstudio5_5_1-keymaker-php/
Zend Studio 6x 在线注册机:http://xzendstudionet/Zend_Studio-for-Eclipse-6_0-KeyMaker/
另外,推荐一款简单实用的PHP编辑器。Editplus
EditPlus功能介绍
首先,EditPlus是一套功能强大的文本编辑器。
它拥有无限制的Undo/Redo功能,让你不再为一步误操作而后悔不已;其强劲的英文拼字检查、自动换行、列数标记、语法高亮显示、垂直选择、搜寻功能,让你全面体验记事本所没有的超强功能;它可以同时编辑多种文件类型,轻松做到“一旦拥有,别无所求”;另外还有全屏幕浏览功能;特别值得一提的是,它的监视剪贴板的功能,能同步于剪贴板自动将文字贴进EditPlus的编辑窗口中,让你省去粘贴的步骤。
其次,EditPlus还是一个好用的(X)HTML编辑器。
在EditPlus中设计网页和编辑一个文档没什么两样。单击“File”→“New”→“HTMLPage”,就可以打开“HTML页面编辑器”窗口,使用它所提供的工具就可以直接进行网页的编辑与创作。EditPlus除了可以对你直接输入的文字用颜色标记HTMLTag(同时支持C/C++、Perl、Java)外,还内建了完整的HTML和CSS1指令功能,你甚至可以一边编辑一边“浏览”(CTRL+B)页面效果。对于习惯用记事本进行网页编辑的网友们来说,它可以帮你节省一半的网页编辑时间。
再次,EditPlus其他比较好用的功能包括:可以设置工程并进行多文件查找;代码片断;自动完成;设置标记方便跳转
EditPlus使用技巧
1、配置文件模板,告别重复的体力劳动
设置好EditPlus的配置文件,就让我们开始EditPlus的使用技巧吧。第一个技巧当然就是和“新建”有关的啦。如果我们经常建立一种文件,而这种文件总会包含一些重复的文字或者代码的话,我们就可以建立模板,然后通过模板建立文件。从而摆脱每次都要重复的体力劳动。
我们就从建立一个属于自己的xhtml文件开始吧。菜单File→ New→ Configure templates→ 在打开的对话框中“填上”菜单中显示的文字,已经模板文件的路径,就可以了。下次当你再次选择File→ New的时候,就能够看到你建立的模板了。
2、顺手的侧边栏
如果你看不到侧边栏,可以使用快捷键(Alt + Shift + 1)。侧边栏包含了“快速目录路径”和“快速剪贴板”功能。“快速目录路径”就不说了,重点来说说“快速剪贴板”功能吧。其实说白了,就是一个地方,这个地方可以存放一些代码片断、常用文言等等文字。当你需要这些文字的时候,只要双击,就可以方便的添加到光标所在位置了。默认情况下会有一些html,css代码,但是,说实话,我是不太经常使用那些东西的,那么多,找到都累死了。所以,我喜欢建立一个自己最常用的“剪贴板”库,因为是自己建的,所以用着就会比较顺手了。
你可以通过这种方式来建立自己的“剪贴板”库文件。在Cliptext侧边栏上的下拉列表框上点击右键 → 新建 → 填写文件名和显示标题→ 在新建的空白侧边栏上点击右键 → 新建 → 填入显示文本和代码即可。
3、华丽的自动完成功能
以说是俺最喜欢的功能了。想象一下,作为一个经常制作网页的人来所,当你打一个“ua”字,然后按下空格,编辑器里面就出现了右边的代码,而且鼠标就停留在第一个href的双引号之间。那是多么愉快的事情。这就是EditPlus的自动完成功能,使用EditPlus的自动完成功能将会极大的提高你的工作效率。而且我们可以根据不同的文件类型,建立不同的“自动完成”,例如,如果是xhtml文件,打“b”+ 空格”,就是 ,而在css文件中,“b”+ 空格”,就是 "border:1px solid red;"。非常的人性化。
你可以通过这样的设置,来使用EditPlus的自动完成功能。Tools→Preperences→ Files→ Settings & syntax → 在File types中设置一下文件类型,然后再Auto completion中选择自动完成文件即可(如果你使用的是我那个 EditPlus压缩包文件,请注意调整这里的自动完成文件的路径)。自动完成文件我们可以自己进行编辑,这里我举个简单的例子,展开下面的代码,这个便是我css文件自动完成的文件内容,以第11行的“#T=bor”为例,它的意思就是如果输入bor然后按空格,就在光标所在位置插入“border:1px solid red;”
4、彩色的文件,高亮语法文件
很多的开发工具都有语法高亮显示功能,EditPlus虽小,但是也有这个功能哦。设置方法可以参考5所示。和“自动完成”功能一样,只要为不同的文件类型指定“高亮语法”文件即可。css、html等常用的文件类型,EditPlus已经自带了高亮语法文件。如果自带的高亮语法文件没有你需要的,你可以去EditPlus官方网站的文件下载频道去看看,来自全球各地的朋友,贡献了很多的不同文件类型的高亮语法文件。可以很方便地免费下载到。
这里就稍微列举一下比较常用的EditPlus的高亮语法文件,更多的请到EditPlus的官方网站下载,EditPlus的官方地址为: http://wwweditpluscom/fileshtml
5、EditPlus正则表达式
EditPlus中的查找(替换)功能,支持正则表达式。使用正则表达式可以极大的提高查找(替换)的强悍程度。因为正则表达式这东西不是一句话就能说完的,而且偏离此篇文章主题,所以这里只列举几个常用的例子。对此有兴趣的可以参考正则表达式资料,或者在EditPlus的help中“Regular Expression”关键字进行索引查找。
使用正则表达式进行查找(替换)的方法如上图所示,选择查找(替换)对话框中“Regular Expression”前面checkbox。点击查找(替换)文本框后的“倒三角”可以选择常用的正则表达式。
6、矩形选区
看到这个词,好像是说图像处理工具,其实非也,不管是VS还是EditPlus,其实都是支持矩形选区的。这对处理一些形如:去掉文章前端行号的情况有特效,矩形全区的选取方式就是按住Alt键,然后用鼠标划矩形选区(如图7所示)。需要注意到是在“自动换行”的情况下,是不能使用“矩形选区”的。你可以使用Ctrl+Shift +W来切换“自动换行”或者“不自动换行”视图。
7、EditPlus快捷键
如果一个来你们公司面试程序员,连Ctrl + C 和Ctrl + V 都不用,而是使用“选中文本”→ 鼠标右键 → 复制,然后再鼠标右键→ 粘贴。你会不会录用他呢?(你还别笑,以前我们公司还真面试过一个这样的,所谓的“精通aspnet”的程序员)。所以熟练的使用软件的快捷键,不仅仅能够极大的提高工作效率,也从一个侧面表现出一个人对此软件的使用能力。EditPlus同样也有很多的快捷键,下面是一些我经常使用的EditPlus特有的快捷键(Ctrl +C 、Ctrl+H这样的通用快捷键就不介绍了),略举一二,更多的请参看文章《EditPlus快捷键》
以浏览器模式预览文件 Ctrl + B
开始编辑“以浏览器模式预览的文件” Ctrl + E
新建html文件 Ctrl+Shift+N
新建浏览器窗口 Ctrl+Shift+B
选中的字母切换为小写 Ctrl+L
选中的字母切换为大写 Ctrl+U
选中的词组首字母大写 Ctrl+Shift+U
复制选定文本并追加到剪贴板中 Ctrl+Shift+C
剪切选定文本并追加到剪贴板中 Ctrl+Shift+X
创建当前行的副本 Ctrl+J
复制上一行的一个字符到当前行 Ctrl+-
剪切选定文本并追加到剪贴板中 Ctrl+Shift+X
合并选定行 Ctrl+Shift+J
反转选定文本的大小写 Ctrl+K
开始/结束选择区域 Alt+Shift+B
选择当前行 Ctrl+R
全屏模式开/关 Ctrl+K
显示或隐藏标尺 Alt+Shift+R
显示或隐藏制表符与空格 Alt+Shift+I
显示函数列表 Ctrl+F11
转到当前文档的指定行 Ctrl + G
设置或清除当前行的标记 F9
转到下一个标记位置 F4
转到上一个标记位置 Shift+F4
清除当前文档中的所有标记 Ctrl+Shift+F9
搜索一对匹配的括号 Ctrl+]
搜索一对匹配的括号并选择该文本 Ctrl+Shift+]
切换当前文档的自动换行功能 Ctrl+Shift+W
编辑当前 HTML 页面的源文件 Ctrl+E
选择了合适你的编辑工具之后,就可以按照你的学习手册。为了方便你的学习。建议下载一本PHP手册。方便随时查询你需要的知识。baidu搜索“PHP手册”即可找到很多。
有了这些之后,好了。你可以按照你的学习计划来学习PHP了。
你能存进数据库,说明你就能取数据将取出的数据进行base64_decode,然后再根据文件格式发出一个http head,再直接echo出去
如:一个jpg的经过header后浏览器就会认为那是一个了
//$db_img 这个是从数据库取出的base64编码格式的二进制数据
$img = base64_decode($db_img);
header("Content-type: image/jpg");
echo $img;
其他格式的文件类型就根据实际情况改header里面的Content-type
经过简单测试,下载大文件(>50M)时会出现,断节问题,还有对中文名字的文件支持不好,甚至返回404,下载的文件打不开也许是因为没有判断是否读取完,因为 fread不一定能一次性将一个文件读入内存,这样服务器有压力,服务器为了稳定可能对该内存区进行了优化,下面贴上我修改的代码,写的不好望指正,共同进步:
function download($file_url,$new_name=''){$file_url=iconv('utf-8','gb2312',$file_url);
//将编码转为支持中英文的gb2312编码
if(!isset($file_url)||trim($file_url)==''){
return '500';
}
if(!file_exists($file_url)){ //检查文件是否存在
return '404';
}
$file_name=basename($file_url);
$file_type=explode('',$file_url);
$file_type=$file_type[count($file_type)-1];
$file_name=trim($new_name=='')$file_name:urlencode($new_name)''$file_type;
//输入文件标签
header("Content-type: application/octet-stream");
header("Accept-Ranges: bytes");
header("Accept-Length: "filesize($file_url));
header("Content-Disposition: attachment; filename="$file_name);
$file_type=fopen($file_url,'r'); //打开文件
//输出文件内容
$file_size=filesize($file_url);//获取文件大小
$buffer=1024; //定义1KB的缓存空间
$file_count=0; //计数器,计算发送了多少数据
while(!feof($file_type) && ($file_size>$file_count)){
//如果文件还没读到结尾,且还有数据没有发送
$senddata=fread($file_type,$buffer);
//读取文件内容到缓存区
$file_count+=$senddata;
echo $senddata;
}
//echo fread($file_type,filesize($file_url));
fclose($file_type);
}
//最主要的原因找到了,保存PHP源码时要用UTF-8 无ROM格式编码保存,否则每个文件头部都会有 EF BB 这两个字节
<php
header('Content-type: application/save-as');
header('Content-Disposition: attachment; filename="arar"');
readfile('http://acom/arar');
>
上面的例子只用了三个语句,完全就能实现你的基本功能。两个header语句告诉浏览器把接下来的数据保存为文件,readfile语句从互联网上获得文件内容到服务器,然后再发给浏览器。
你需要使用url参数获得地址,这个代码不难,你应该是会的。
0条评论