php面试题解

看了几道面试题,觉得还不错,在网上找了简单的答案,记录一下

浏览器输入www.baidu.com回车后,都发生了什么?

1. DNS解析:

在浏览器中输入的是一个网址,是不能直接用来进行连接的,因而就要使用DNS地址解析将输入的URL网址转换为IP地址。

(1)在浏览器中输入www.google.cn域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。 

(2)如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。 

(3)如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/IP参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。

2. Socket建立连接

当我们输入这样一个请求时,首先要建立一个socket连接,因为socket是通过ip和端口建立的,所以之前还有一个DNS解析过程,把www.google.com变成ip,如果url里不包含端口号,则会使用该协议的默认端口号。

3. 发送HTTP请求 ----- http响应报文头

三次握手

4.2 HTTP应答码

HTTP应答码也称为状态码,它反映了Web服务器处理HTTP请求状态。HTTP应答码由3位数字构成,其中首位数字定义了应答码的类型: 

1XX-信息类(Information),表示收到Web浏览器请求,正在进一步的处理中 

2XX-成功类(Successful),表示用户请求被正确接收,理解和处理例如:200 OK 

3XX - 重定向类(Redirection),表示请求没有成功,客户必须采取进一步的动作。 

4XX - 客户端错误(Client Error),表示客户端提交的请求有错误 例如:404 NOT Found,意味着请求中所引用的文档不存在。 

5XX - 服务器错误(Server Error)表示服务器不能完成对请求的处理:如 500 

对于我们Web开发人员来说掌握HTTP应答码有助于提高Web应用程序调试的效率和准确性

如何提高程序的安全性

1.把握整站的结构,避免泄露站点敏感目录

  在安全性上,一个入口点文件也能隐藏后台地址

2.使用预编译语句,避免sql注入

3.预防XSS代码,如果不需要使用cookie就不使用

4.限制用户权限,预防CSRF

5.严格控制上传文件类型

6.使用更高级的hash算法保存数据库中重要信息

7.验证码安全性

----判断表单重复提交

1、js禁掉提交按钮。

2、使用Post/Redirect/Get模式。

在提交后执行页面重定向,这就是所谓的Post-Redirect-Get(PRG)模式。简言之,当用户提交了表单后,你去执行一个客户端的重定向,转到提交成功信息页面

3、在session中存放一个特殊标志。

4.使用header函数转向

除了上面的方法之外,还有一个更简单的方法,那就是当用户提交表单,服务器端处理后立即转向其他的页面,代码如下所示。

7、在数据库里添加约束。

在数据库里添加唯一约束或创建唯一索引,防止出现重复数据。这是最有效的防止重复提交数据的方法。

8.使用Cookie处理

使用Cookie记录表单提交的状态,根据其状态可以检查是否已经提交表单,请见下面的代码

----如何加快页面的加载速度

数据库优化  eg:使用存储过程

php缓存   eg:cdn

页面静态化处理

样式行为结构分离

你可能感兴趣的:(php面试题解)