当一个网页的中既加入了弹出DIV效果,也有flash影片时,就会出现弹出层被flash挡住,这时候就需要将flash权重降低,至于网页的最底层,而且flash必须设置成透明,否则仍然会遮住,代码如下: <div style=”z-index:-1;padding-top:10px; text-align:center; border:0;”>// 这里设置Z-index= -1将包含flash的层至于最底层 <object classid=”clsid:D27CDB6E-AE6D-11cf-96B8-444553540000″ width=”1003″ height=”490″ codebase=”http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab”> <param name=”movie” value=”wall2.swf” /> <param name=”quality” value=”high” /> <param name=”bgcolor” value=”#000000″ /> <param name=”allowScriptAccess” value=”sameDomain” /> <embed src=”wall2.swf” quality=”high” bgcolor=”#000000″ width=”1003″ height=”490″ name=”wall2″ align=”middle” play=”true” loop=”false” quality=”high” wmode=”Opaque” // 这里设置针对firefox的透明效果 allowScriptAccess=”sameDomain” type=”application/x-shockwave-flash” pluginspage=”http://www.adobe.com/go/getflashplayer”> </embed> <param name=”wmode” value=”Opaque”> // 这里设置针对IE的透明效果 </object> </div>
Posts Tagged: PHP
PHP实现URL路由
本例可以实现 1.符合规则定义的伪静态访问路径解析 对于”test.php/user/lists/normal/id/2.html” 可解析为 control = user,action = lists,filter = normal,order = id,curPage = 3 对于”test.php/users/lists.html” 可解析为 control = user,action = lists,filter = all,order = ”,curPage = 1 可取得规则定义中的默认值 2.不符合规则定义的伪静态路径解析 action,control 不符合规则 对于”test.php/users/lists/all/id1/1.html” 报错 试图访问不存在的页面 不符合匹配模式 对于”test.php/user/lists/all/id1/1.html” 可解析为 control = user,action = lists,filter = all,order = ”,curPage = 1 可取得不符合匹配模式项目的默认值 <?php // url 路由规则定义… Read more »
什么是回调函数
回调函数,就是由你自己写的。你需要调用另外一个函数,而这个函数的其中一个参数,就 是你的这个回调函数名。这样,系统在必要的时候,就会调用你写的回调函数,这样你就可 以在回调函数里完成你要做的事。 模块A有一个函数foo,它向模块B传递foo的地址,然后在B里面发生某种事件(event)时,通过从A里面传递过来的foo的地址调用foo,通知A发生了什么事情,让A作出相应反应。 那么我们就把foo称为回调函数。 例子: 回调函数是一个很有用,也很重要的概念。当发生某种事件时,系统或其他函数将会自动调用你定义的一段函数。回调函数在windows编程使用的场合很多,比如Hook回调函数:MouseProc,GetMsgProc以及EnumWindows,DrawState的回调函数等等,还有很多系统级的回调过程。本文不准备介绍这些函数和过程,而是谈谈实现自己的回调函数的一些经验。 之所以产生使用回调函数这个想法,是因为现在使用VC和Delphi混合编程,用VC写的一个DLL程序进行一些时间比较长的异步工作,工作完成之后,需要通知使用DLL的应用程序:某些事件已经完成,请处理事件的后续部分。开始想过使用同步对象,文件影射,消息等实现DLL函数到应用程序的通知,后来突然想到可不可以在应用程序端先写一个函数,等需要处理后续事宜的时候,在DLL里直接调用这个函数即可。 于是就动手,写了个回调函数的原形。在VC和 Delphi里都进行了测试 一:声明回调函数类型。 vc版 typedef int (WINAPI *PFCALLBACK)(int Param1,int Param2) ; Delph版 PFCALLBACK = function(Param1:integer;Param2:integer):integer;stdcall; 实际上是声明了一个返回值为int,传入参数为两个int的指向函数的指针。 由于C++和PASCAL编译器对参数入栈和函数返回的处理有可能不一致,把函数类型用WINAPI(WINAPI宏展开就是__stdcall)或stdcall统一修饰。 二:声明回调函数原形 声明函数原形 vc版 int WINAPI CBFunc(int Param1,int Param2); Delphi版 function CBFunc(Param1,Param2:integer):integer;stdcall; 以上函数为全局函数,如果要使用一个类里的函数作为回调函数原形,把该类函数声明为静态函数即可。 三: 回调函数调用调用者 调用回调函数的函数我把它放到了DLL里,这是一个很简单的VC生成的WIN32 DLL.并使用DEF文件输出其函数名 TestCallBack。实现如下: PFCALLBACK gCallBack=0; void WINAPI TestCallBack(PFCALLBACK Func) { if(Func==NULL)return; gCallBack=Func; DWORD ThreadID=0; HANDLE hThread =… Read more »
批量修改Linux下文件名导出到Windows上乱码问题
博客大巴最近正在进行盛大的摄影展相片征集活动,主题是大同·视界,在北京、上海等大城市的几万辆出租车、公交车、地铁上投放了广告,规模可谓空前,十天内通过审核的照片多达数G,我受命将这些照片导出供评委评审,因为时间关系,等到以后一起审核肯定是来不及的。 规则很简单,数据中的某张表上记录着关于各个作品组的信息,因为摄影展图片是按组来存放的,就是说数据库中某张表(假定表明叫photo)的某个字段(假定名称叫做pics)存放着一组相片的名称(两个图片名称以特定分隔符分割,我们假定为英文状态的逗号),现在要做的就是:导出数据库中所有通过审核的图片(表中字段state为1),然后按用户“昵称_作品名称_作品序号_作品ID_文件名”来重命名。 这个代码很简单,如下: 而这样会导致一个问题,就是导出的文件名在中文版Windows系统是乱码的,因为Linux系统的文件名默认编码是UTF-8的,而中文版Windows系统的编码是GBK的,我之所以强调中文版Windows是因为英文的Windows是ISO编码的,如果需要,可以对照着我后面的代码批量修改文件名,只是改一下转换的目标编码即可。 如果你是在服务器上执行这段代码的,当然是最好不过的,而且推荐用命令行去执行,因为如果你的文件过多,apache可能会超时,导致部分文件的文件名没有转换完成。、 转换编码的脚本如下: ‘; } //copy($utf_name, $file_array[$i]); } } } } } filesInDir("image"); ?> 怎么样?很简单吧?确实很简单,以上共同的假设就是:你的文件名中有中文,如果没有中文或者类似中文的文字,比如日文等,也就无所谓乱码的问题了,这些各种各样的编码都是洋鬼子弄出来的,而且也因为英文是当今世界最强势的语言,当然兼容英文字母,即使是GBK这样的国标码。 BTW:以上我主要是想介绍一下大批量文件名乱码的补救方法,其实如果有可能,这种事情完全可以避免,因为你在输出数据库内容的时候就可以完全可以控制输出的字符编码,当然,在Linux下看是乱码,导出到Windows上就正常了。 如果你已经将UTF-8的文件打包下载到本地才发现文件名乱码,那么你需要一个Linux操作系统,并且装了PHP,因为你在Windows上无法解压这个压缩包,解压过程中会出现错误提示,因为Windows认为这些乱码是非法字符,不能作为文件名 以上方法,纯属个人经验,不对之处欢迎拍砖
PHP面试题汇总
这是一份比较全面的PHP面试题.对准备去新公司应聘PHP职位的开发者应该有帮助. 或者说,对招聘PHP开发人员的企业也有些帮助,不过就不要原样打印出来考了,稍微改一改. 简述题(50分) 1、用PHP打印出前一天的时间格式是2006-5-10 22:21:21(2分) 2、echo(),print(),print_r()的区别(3分) 3、能够使HTML和PHP分离开使用的模板(1分) 4、使用哪些工具进行版本控制?(1分) 5、如何实现字符串翻转?(3分) ————————————————————— 6、优化MYSQL数据库的方法。(4分,多写多得) 7、PHP的意思(送1分) 8、MYSQL取得当前时间的函数是?,格式化日期的函数是(2分) 9、实现中文字串截取无乱码的方法。(3分) ————————————————————— 10、您是否用过版本控制软件? 如果有您用的版本控制软件的名字是?(1分) 11、您是否用过模板引擎? 如果有您用的模板引擎的名字是?(1分) 12、请简单阐述您最得意的开发之作(4分) 13、对于大流量的网站,您采用什么样的方法来解决访问量问题?(4分) —————————————————————– 14、用PHP写出显示客户端IP与服务器IP的代码1分) 15、语句include和require的区别是什么?为避免多次包含同一文件,可用(?)语句代替它们? (2分) 16、如何修改SESSION的生存时间(1分). 17、有一个网页地址, 比如PHP研究室主页: http://www.phpv.net/index.html,如何得到它的内容?($1分) 18、在HTTP 1.0中,状态码401的含义是(?);如果返回“找不到文件”的提示,则可用 header 函数,其语句为(?);(2分) 19、在PHP中,heredoc是一种特殊的字符串,它的结束标志必须?(1分) 20、谈谈asp,php,jsp的优缺点(1分) 21、谈谈对mvc的认识(1分) ——————————————————————- 22、写出发贴数最多的十个人名字的SQL,利用下表:members(id,username,posts,pass,email)(2分) 23. 请说明php中传值与传引用的区别。什么时候传值什么时候传引用?(2分) 24. 在PHP中error_reporting这个函数有什么作用? (1分) 25. 请写一个函数验证电子邮件的格式是否正确 (2分) 26. 简述如何得到当前执行脚本路径,包括所得到参数。(2分) 27.如何修改SESSION的生存时间. (1分) ——————————————————————– 28、JS表单弹出对话框函数是?获得输入焦点函数是? (2分) 29、JS的转向函数是?怎么引入一个外部JS文件?(2分) 30、foo()和@foo()之间有什么区别?(1分)… Read more »
Javascript跨域和Ajax跨域解决方案
jax跨域和JS的跨域通信(Cross The Site)的几种解决方案 最近做的一个项目中需要ajax跨域取得数据,如果是在本域中确实没有问题,但是放到二级域和其他域下浏览器直接就弹出提示框:“该页正在访问其控制范围之外的数据,这有些危险,是否继续” 1.什么引起了ajax跨域不能的问题 ajax本身实际上是通过XMLHttpRequest对象来进行数据的交互,而浏览器出于安全考虑,不允许js代码进行跨域操作,所以会警告。 2.有什么完美的解决方案么? 没有。解决方案有不少,但是只能是根据自己的实际情况来选择。 具体情况有: 一、本域和子域的相互访问: www.aa.com和book.aa.com 二、本域和其他域的相互访问: www.aa.com和www.bb.com 用 iframe 三、本域和其他域的相互访问: www.aa.com和www.bb.com 用 XMLHttpRequest访问代理 四、本域和其他域的相互访问: www.aa.com和www.bb.com 用 JS创建动态脚本 解决方法: 一、 如果想做到数据的交互,那么www.aa.com和book.aa.com必须由你来开发才可以。可以将book.aa.com用iframe添加到 www.aa.com的某个页面下,在www.aa.com和iframe里面都加上document.domain = “aa.com”,这样就可以统一域了,可以实现跨域访问。就和平时同一个域中镶嵌iframe一样,直接调用里面的JS就可以了。(这个办法我没有尝 试,不过理论可行) 二、当两个域不同时,如果想相互调用,那么同样需要两个域都是由你来开发才可以。用iframe可以实现数据的互相调用。解决方案就是用window.location对象的hash属性。hash属性就是http://domian/web/a.htm#dshakjdhsjka 里面的#dshakjdhsjka。利用JS改变hash值网页不会刷新,可以这样实现通过JS访问hash值来做到通信。不过除了IE之外其他大部分浏 览器只要改变hash就会记录历史,你在前进和后退时就需要处理,非常麻烦。不过再做简单的处理时还是可以用的,具体的代码我再下面有下载。大体的过程是 页面a和页面b在不同域下,b通过iframe添加到a里,a通过JS修改iframe的hash值,b里面做一个监听(因为JS只能修改hash,数据 是否改变只能由b自己来判断),检测到b的hash值被修改了,得到修改的值,经过处理返回a需要的值,再来修改a的hash值(这个地方要注意,如果a 本身是那种查询页面的话比如http://domian/web/a.aspx?id=3,在b中直接parent.window.location是无法取得数据的,同样报没有权限的错误,需要a把这个传过来,所以也比较麻烦),同样a里面也要做监听,如果hash变化的话就取得返回的数据,再做相应的处理。 三、 这种情形是最经常遇到的,也是用的最多的了。就是www.aa.com和www.bb.com你只能修改一个,也就是另外一个是别人的,人家告诉你你要取 得数据就访问某某连接参数是什么样子的,最后返回数据是什么格式的。而你需要做的就是在你的域下新建一个网页,让服务器去别人的网站上取得数据,再返回给 你。domain1下的a向同域下的GetData.aspx请求数据,GetData.aspx向domain2下的 ResponseData.aspx发送请求,ResponseData.aspx返回数据给GetData.aspx, GetData.aspx再返回给a,这样就完成了一次数据请求。GetData.aspx在其中充当了代理的作用。具体可以看下我的代码。 四、 这个和上个的区别就是请求是使用<script>标签来请求的,这个要求也是两个域都是由你来开发才行。原理就是JS文件注入,在本域内的a 内生成一个JS标签,它的SRC指向请求的另外一个域的某个页面b,b返回数据即可,可以直接返回JS的代码。因为script的src属性是可以跨域 的。具体看代码,这个也比较简单。 code: http://www.live-share.com/files/300697/Cross_The_Site_Test_code.rar.html (csdn不能粘贴附件么?) 总结: 第一种情况:域和子域的问题,可以完全解决交互。 第二种情况:跨域,实现过程非常麻烦,需要两个域开发者都能控制,适用于简单交互。 第三种情况:跨域,开发者只控制一个域即可,实现过程需要增加代理取得数据,是常用的方式。 第四种情况:跨域,两个域开发者都需要控制,返回一段js代码。 PS:代码自己按照情况修改即可。… Read more »
PHP函数rand和mt_rand
mt_rand() 比rand() 快四倍 很多老的 libc 的随机数发生器具有一些不确定和未知的特性而且很慢。PHP 的 rand() 函数默认使用 libc 随机数发生器。mt_rand() 函数是非正式用来替换它的。该函数用了 Mersenne Twister 中已知的特性作为随机数发生器,mt_rand() 可以产生随机数值的平均速度比 libc 提供的 rand() 快四倍。
学好PHP你需要知道什么
1、不要急,先知道什么是HTTP协议 2、接下来你可以看看HTML和CSS,并能够进行一般的应用 3、是该学PHP的时候了,熟练掌握每个细节是不可能的,但是对着PHP手册,你至少能找到你需要的功能函数(方法),并能够正确的使用它们。 4、就算是最简单的应用,哪怕是个记事本程序,都需要涉及到数据库(你可以使用文本或者其他的方式去储存,但是绝对没有数据库来得方便和强大),所以这一步,你得去读一下基本的SQL语法,然后能够使用它们。 5、一个好点的论坛,常常逛逛,有问题就问,当然你也可以回答别人的问题,不但帮助了别人还能帮自己理清思路,说不定别人的问题,下次就会出现在你的面前。 6、学一下XML吧,并试着用PHP去操作它,这个东西可能你不经常用到,但是它们在很多场合是非常重要的。 7、找一个你喜欢的Linux版本玩一下,推荐FreeBSD,熟悉一下基本的配置环境、编辑器使用和简单的命令等等,如果你去面试PHP开发的职位,我保证你考官一定会出Linux方面的题目的 8、OK,现在你已经掌握了基本的东西了,你需要提高了,去研究一下正则表达式吧,如果你找一本正则表达的书,看一般之后就能理解并记住,恭喜你,你是个天才或者是火星来的。如果不是,请尝试阅读多遍,正则表达式能够帮你在处理文本时节省很多脑细胞和时间。 9、下面研究一下设计模式吧,不需要很多,这些东西只有用的时候才知道,但是你需要掌握最基本的几个设计模式,比如MVC,Factory,当你掌握了这些设计模式之后,回头再看看你你曾经引以为豪的程序吧,那些就像长在河边的杂草,乱七八糟的。试着用你觉得合适的设计模式去重构你以前写过的程序,这对你很有帮助,面试的时候你就知道了。 10、在你动手一个巨大的工程之前,我建议你先了解一下什么叫框架,开源的框架有很多,我推荐你去研究Zend Framework,我喜欢它是因为它的文档足够的完善,你可以找到几乎所有你遇到的问题的解释。然后去读一本叫做《Zend framework in action》的书,并试着利用zf去构建一些你喜欢的东西,如果你看完ZF的源码,那当然是最好,如果你没有时间,我建议你选择其中的一个或者几个模块去读一下,然后利用这些模块去构建一个小的系统,这对你很有帮助。 11、好了,如果你上面十条都完成了,恭喜你,你可以选择你喜欢的公司去面试了,推荐你去一些开源的技术构建的网络公司,那里不需要学历,经历,只看重你的能力和潜力,如果你足够自信,你可以试试一些大的公司,比如ebay,比如yahoo,也比如加入我们Blogbus :p
XP下Apache2.2 + PHP5.2安装方法
以前一直用集成环境,在公司分别安装各个程序,真是受罪啊 找了很多教程都不行,最后这个帮我解决了 1、软件准备: Apache2.2 下载地址:http://httpd.apache.org/download.cgi PHP5.2 下载地址:http://cn2.php.net/ 2、安装并设置环境变量: 安装Apache2.2到 D:Apache2.2 解压PHP5.2到 D:php5.2 在环境变量->系统变量Path后添加 ;D:php5.2 3、设置配置文件: Apache配置: 打开 D:Apache2.2confhttpd.conf 文件 查找 LoadModule 块,在后面添加: LoadModule php5_module d:php5.2php5apache2_2.dll 查找 DocumentRoot, 将后面的第一个 <Directory></Directory>块改为: <Directory “D:/php5.2″> Options FollowSymLinks AllowOverride None Order deny,allow Deny from all Satisfy all </Directory> 查找 ScriptAlias 块,在后面添加: ScriptAlias /php/ “D:/php5.2/” 查找 DirectoryIndex 块,修改为: DirectoryIndex index.php default.php… Read more »
PHP中Header转向问题
M6上有人问了一个这样的问题: header(“Location:$url”) $url从GET传过来时会转到http://127.0.0.1/$url 谁知道原因? 出现这种转向不正确的原因是通过GET方法获取的URL后缀有可能是不正确的,比如带了其他参数等等,而且指定一个准确的相对地址也不容易,所以我们有必要先获取服务器URL,然后再获取后面的字符串地址,再加上我们需要访问的文件名 主要代码如下: <?php /* Redirect to a different page in the current directory that was requested */ $host = $_SERVER[’HTTP_HOST’]; $uri = rtrim(dirname($_SERVER[’PHP_SELF’]), ‘/\’); $extra = ‘mypage.php’; header("Location: http://$host$uri/$extra"); exit; ?> PHP手册中也有讲到,具体请点击:PHP手册 最后解释一下为什么要用rtrim()方法,这样做是为了过滤一些被编码的URL,比如查询符号“?”等,具体用法请参考PHP手册里面的解释,我就不罗嗦了。