PHP 面试题汇总一

1.表单中post和get的区别

  答:

     1)get是发送请求HTTP协议通过url参数传递进行接收而post是实体数据可以通过表单提交大量信息

   http 定义了与服务器交互的不同的方法,最基本的4种方法,分别是:GET ,POST ,PUT ,DELETE .

      URL 全称是资源描述符:Uniform Resource Locator ,说白了就是用于描述网络上的资源. 而HTTP的GET ,POST ,PUT ,DELETE 正是对应这个资源的查,改,增,删 4个操作.

        而GET一般是用于获取/查询资源信息,而POST 一般用于更新资源

      根据http规范,GET用于信息获取,而且应该是安全和幂等的.

      (1)所谓安全,就是只是查询,而不是修改数据.就是想数据库的查询一样,只是查询数据库,而不是修改. 

         注意:这里的安全主要是指的是非修改信息.

   (2).幂等的意味着对同一URL的多个请求应该返回同样的结果。这里我再解释一下幂等这个概念:

  幂等(idempotent、idempotence)是一个数学或计算机学概念,常见于抽象代数中。
  幂等有一下几种定义:
  对于单目运算,如果一个运算对于在范围内的所有的一个数多次进行该运算所得的结果和进行一次该运算所得的结果是一样的,那么我们就称该运算是幂等的。比如绝对值运算就是一个例子,在实数集中,有abs(a)=abs(abs(a))。
  对于双目运算,则要求当参与运算的两个值是等值的情况下,如果满足运算结果与参与运算的两个值相等,则称该运算幂等,如求两个数的最大值的函数,有在在实数集中幂等,即max(x,x) = x。

看完上述解释后,应该可以理解GET幂等的含义了。

  但在实际应用中,以上2条规定并没有这么严格。引用别人文章的例子:比如,新闻站点的头版不断更新。虽然第二次请求会返回不同的一批新闻,该操作仍然被认为是安全的和幂等的,因为它总是返回当前的新闻。从根本上说,如果目标是当用户打开一个链接时,他可以确信从自身的角度来看没有改变资源即可。

    备注: 小菜必看,什么叫单目运算:

 

单目运算符是指运算所需变量为一个的运算符,又叫一元运算符,其中有逻辑非运算符:!、按位取反运算符:~、自增自减运算符:++, --等。
逻辑非运算符【!】、按位取反运算符【~】、自增自减运算符【++, --】、负号运算符【-】、类型转换运算符【(类型)】、指针运算符和取地址运算符【*和&】、长度运算符【sizeof】
运算所需变量为两个的运算符叫做双目运算符,例如+,-,*,/,%,<,>,>=,<=,==,!=,<<,>>,&,^,|,&&,||,=
运算所需变量为三个的运算符叫做三目运算符,只有条件表达式【?:】

 2).根据HTTP规范,POST表示可能修改变服务器上的资源的请求。继续引用上面的例子:还是新闻以网站为例,读者对新闻发表自己的评论应该通过POST实现,因为在评论提交后站点的资源已经不同了,或者说资源被修改了。

   GET 和post的原理性的区别:

   2.1. GET请求的数据会附加在URL之后,就是把信息放到HTTPS协议头中,以?分割URL和传输数据.参数之间使用&相连:比如,http://i.cnblogs.com/editpost.aspx?opt=1&ops=2

          如果数据是英文或者字母,会原样发送,如果是空格会转换为+,如果是中文或者其他特殊字符,则会把字符串进行BASE64加密

   比如:http://www.xxx.com/doku.php?id=%E5%B7%A5%E4%BD%9C%E6%97%A5%E5%BF%97 :其中%XX,表示的是以16进制表示的ASCII.

     而post提交的数据则放在是HTTP包的包体中.

   2.2.GET数据量的大小:理论上POST的数据大小没有限制

    URL中不存在参数上限的问题,HTTP协议也没有规定对URL的长度进行限制.而一般这个URL长度限制是浏览器本身或者服务器对它的限制.

    理论上POST的大小是没有限制的,HTTP协议规范也没有进行大小限制.

    起限制作用的是服务器的处理程序的处理能力.

 2.3.获取get和post的参数的函数不一样

    在php中有$_GET 获取GET请求的参数,$_POST获取的是POST请求的参数,而$_REQUEST获取的是两种都可以的:GET和POST

 2.4.安全性能:

    post不可见,而get在url中可见,GET 请求登录,用户名和密码在URL中,登录界面有缓存会看到用户名和密码,另外一种是浏览器的历史记录,别人可以直接拿到用户名和密码

   GET 可能会造成CSRF攻击:Cross Site Request Forgery 

   get重 点在取,而Post重点在提交.

         更多详细的信息可以参考:

  https://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html

 

 2.Session和Cookie的区别:

  答:1)位置:session 位于服务器,php的session_dir配置,而cookie位于浏览器的客户端,也就是用户的本地

            2)失效:session会话结束,session失效,cookie 会话结束,仍然可能存在本地.都可以进行失效的设置         

           总结: session:储存用户访问的全局唯一变量,存储在服务器上的php指定的目录中的(session_dir)的位置进行的存放 cookie:用来存储连续訪問一个頁面时所使用,是存储在客户端,对于Cookie来说是存储在用户WIN的Temp目录中的。 两者都可通过时间来设置时间长短

3.数据库中的事务是什么? 

  答:事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成, 事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。

            特性:ACID

              

posted @ 2017-10-20 22:14  -起风了🪐  阅读(192)  评论(0编辑  收藏  举报