04
2013-02

php程序员面试题第五季

21、一个函数的参数不能是对变量的引用,除非在php.ini中把__设为on。
allow_call_time_pass_reference

22、在PHP中,heredoc是一种特殊的字符串,它的结束标志必须__。
结束标识符所在的行不能包含任何其它字符除";"

23、有一数组 $a=array(3,2,4,9,8);请将其重新排序,按从小到大的顺序列出。
可用冒泡法进行排序:
冒泡排序的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后,此时第一趟结束,在最后的数必是所有数中的最大数。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到最大数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最大数。如此下去,直至最终完成排序。

24、写出session的运行机制。

session创建时,是否会在客户端记录一个cookie?cookie里面的内容是什么?
session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。
当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否已包含了一个session标识-称为sessionid,如果已包含一个sessionid则说明以前已经为此客户端创建过session,服务器就按照sessionid把这个session检索出来使用(如果检索不到,可能会新建一个),如果客户端请求不包含sessionid,则为此客户端创建一个session并且生成一个与此session相关联的sessionid,sessionid的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个sessionid将被在本次响应中返回给客户端保存。
保存这个sessionid的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发给服务器。一般这个cookie的名字都是类似于SEEESIONID。

由于cookie可以被人为的禁止,必须有其他机制以便在cookie被禁止时仍然能够把sessionid传递回服务器。经常被使用的一种技术叫做URL重写,就是把sessionid直接附加在URL路径的后面,附加方式也有两种,一种是作为URL路径的附加信息,另一种是作为查询字符串附加在URL后面。为了在整个交互过程中始终保持状态,就必须在每个客户端可能请求的路径后面都包含这个SEEESIONID。

25、Cookie的原理及使用?
Cookie是网站保存在浏览器客户端的信息,也就是说保存在访客的机器里的变量,一般随着HTTP头发送到服务器端。在Cookie生效之后及失效之前,客户每次发出页面请求的时候(包括PHP页面和静态html页面),都会把Cookie一块发送到服务器,只要我们针对它进行相应的处理,就可以实现变量“追随”。

cookie可以跨越子域名。
比如我们在xiaofeicn.com下面注册个个cookie,那么可以在bbs.xiaofeicn.com上读取到该cookie。
session不可以跨越子域名:
比如我们在xiaofeicn.com下面注册个个session,那么不可以在bbs.xiaofeicn.com,www.xiaofeicn.com上读取到该session。

a. 设置一个Cookie变量
  设置一个Cookie变量,PHP使用的函数是: int setcookie(string name, string value, int expire,
string path, string domain, int secure);
  其中name是Cookie变量名称标识,你在PHP中将可以象使用普通变量名一样来用它引用Cookie变量。value是Cookie变量的初始值,expire 表示该Cookie变量的有效时间;path 为该Cookie变量的相关路径;domain 表示Cookie变量的网站;secure 则需在 https 的安全传输时才有效。   例如我们要设置一个变量username,它的值是字符串“bluewind”,我们可以这么写代码: setcookie (“username”,“bluewind”); //这两个参数是setcookie必要的。
  我们还想给这个变量设置有效时间来限制操作超时等,比如说10分钟: setcookie (“username”,“bluewind”, 600000); //有效时间的单位是毫秒。
  注意:setcookie和header函数一样,需要放在任何能向客户端输出的语句之前。

b. 销毁一个变量
  销毁Cookie变量只要将它的value设为空(“”)就可以了,如想销毁上面那个变量只要再写一次: setcookie (“username” ,“”);
  就可以了。这常用作安全退出之用。

c. Cookie的有效范围和生存期
  Cookie的有效范围(也就是说在这个范围的页面都能得到这个Cookie变量)默认的是该目录及其子目录,当然你可以用setcookie的path和domain参数进行修改。如果你不对cookie的expire进行设置(参见1. 设置一个Cookie变量中的例子),那么当你离开网站的页面,cookie也同时得到自动销毁。


除非注明,文章均为史亚永原创,欢迎转载!转载请注明本文地址,谢谢。

本文地址:http://www.shiyayong.cn/post/127.html

评论列表:

发表评论:

(设置个性头像)

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

无觅相关文章插件,快速提升流量