PHP面试
adminwoc
这个作者很懒,什么都没留下…
展开
-
如果用户将浏览器的cookie禁用,问session还能使用吗?为什么?如何解决?
不能使用. 因为session是基于cookie的. cookie存储着sessionid原创 2018-03-01 20:43:50 · 4192 阅读 · 0 评论 -
说明 PHP 中传值和传引用的区别?
传值:是把实参的值赋值给形参,那么对形参的修改,不会影响实参的值传地址:是传值的一种特殊方式,只是他传递的是地址,不是普通的如int那么传地址以后,实参和形参都指向同一个对象传引用:真正的以地址的方式传递参数传递以后,形参和实参都是同一个对象,只是他们名字不同而已对形参的修改将影响实参的值...原创 2018-03-01 21:02:30 · 228 阅读 · 0 评论 -
php权限控制修饰符有哪些?
原创 2018-03-01 21:03:54 · 1536 阅读 · 0 评论 -
HTTP状态中302 、403、 500 ,200 ,404 、502 代码含义?
302:临时重定向403:服务器拒绝请求500:服务器内部错误200:请求成功404:页面无法找到502:服务器网关错误原创 2018-03-01 21:04:36 · 11058 阅读 · 0 评论 -
include和require都能把另外一个文件包含到当前文件中,他们有什么区别?Include和include_once 又有什么区别?
1、require 的使用方法如 require("MyRequireFile.php"); 。这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。2、include 使用方法如 include("MyIncludeFile.php"); 。这个函数一般是放在流程控制的处理部分中。PHP 程序网页在读到 i...原创 2018-03-01 21:06:15 · 1074 阅读 · 0 评论 -
表单中get与post提交方法的区别?
1.GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中)。POST把提交的数据则放置在是HTTP包的包体中。2、GET方式提交的数据受到特定的浏览器及服务器对它的限制,传输的数据量会比较小(2KB);POST相对会较大,主要取决于服务器的处理程序的能力(IIS4中最大量为80KB,IIS5中为100KB)。3、POST的安全性要比GET的安全性高...原创 2018-03-01 21:06:59 · 662 阅读 · 0 评论 -
php异常级别,如何处理异常?
Deprecated 最低级别的错误(不推荐,不建议)使用一些过期函数的时候会出现,程序继续执行Notice 通知级别的错误使用一些未定义变量、常量或者数组key没有加引号的时候会出现,程序继续执行Waning 警告级别的错误程序出问题了,需要修改代码!!!程序继续执行Fatal Error 错误级别的错误程序直接报错,需要修改代码!!!中断程序执行,可使用register_shutdown_fu...原创 2018-03-01 21:09:55 · 960 阅读 · 0 评论 -
sql连接查询方式有哪些
原创 2018-03-01 21:12:59 · 907 阅读 · 0 评论 -
echo(),print(),print_r()之间的区别?
echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用) print() 只能打印出简单类型变量的值(如int,string) print_r() 可以打印出复杂类型变量的值(如数组,对象) echo 输出一个或者多个字符串...转载 2018-03-01 21:16:23 · 1245 阅读 · 0 评论 -
什么是Ajax,Ajax在什么情况下会产生缓存,如何解决缓存问题?项目中有些地方不建议使用Ajax,为什么?
AJAX的全称是Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。能够实现局部刷新页面。产生缓存的情况:Ajax在发送的数据成功后,会把请求的URL和返回的响应结果保存在缓存内,当下一次调用Ajax发送相同的请求时,它会直接从缓存中把数据取出来,这是为了提高页面的响应速度和用户体验。当前这要求两次请求URL完全相同,包括参数。这个时候,浏览...原创 2018-03-01 21:18:02 · 9453 阅读 · 0 评论 -
isset、empty、is_null的区别
empty()bool empty ( mixed var)如果 var 是非空或非零的值,则 empty() 返回 FALSE。换句话说,""、0、"0"、NULL、FALSE、array()、var $var; 以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUEisset()如果 var 存在则返回 TRUE,否则返回 FALSE。 如果已经使用 unset() 释放...原创 2018-03-01 21:19:16 · 175 阅读 · 0 评论 -
数据库中的事务是什么
实现:用begin,rollback,commit来实现begin 开始一个事务rollback 事务回滚commit 事务确认MYSQL中只有INNODB和BDB类型的数据表才能支持事务处理!其他的类型是不支持的!一般MYSQL数据库默认的引擎是MyISAM,这种引擎不支持事务!特征:事务都应该具备ACID特征。所谓ACID是Atomic(原子性),Consistent(一致性),Isolate...原创 2018-03-01 21:21:09 · 609 阅读 · 0 评论 -
session依赖于cookie,cookie存储着sessionid。禁用cookie,session是否可以使用。
可以通过其他方式传递sessionid。具体操作如下:设置php.ini中的session.use_trans_sid = 1或者编译时打开打开了–enable-trans-sid选项,让PHP自动跨页传递session id。手动通过URL传值、隐藏表单传递session id。用文件、数据库等形式保存session_id,在跨页过程中手动调用...原创 2018-03-01 21:01:21 · 2284 阅读 · 0 评论 -
单用户登录
目的:一个账号只能在一个地方登录,不能同时登录有两种处理逻辑:1. A登录后,B不能使用同样的账户进行登录后台逻辑定义:用户数据表多添加一个字段,默认为false,每次用户发起登录,检测是否为false,是则可以登录,并设置为true,如果为true,则提示用户已登录,请换个账号2. A登录后,B可以登录,B登录成功的同时,A会自动被踢后台逻辑定义:用户登录成功后,利用登录时间生成一个Sessio...原创 2018-03-01 20:58:52 · 1736 阅读 · 0 评论 -
说明 PHP 中传值和传引用的区别?
传值:是把实参的值赋值给形参,那么对形参的修改,不会影响实参的值传地址:是传值的一种特殊方式,只是他传递的是地址,不是普通的如int那么传地址以后,实参和形参都指向同一个对象传引用:真正的以地址的方式传递参数传递以后,形参和实参都是同一个对象,只是他们名字不同而已对形参的修改将影响实参的值...转载 2018-03-01 20:43:55 · 385 阅读 · 0 评论 -
SESSION 与COOKIE 的区别是什么,请从协议,产生的原因与作用说明?
产生的背景和原理:HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。于是需要引入一种机制,COOKIE于是就顺应而生。Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器...转载 2018-03-01 20:44:00 · 2259 阅读 · 0 评论 -
用PHP打印出前一天的时间格式是2018-1-20 22:21:21
方式一:echo date('Y-m-d H:i:s',strtotime('-1 day',time()));方式二:echo date("Y-m-d H:i:s",time()-24*3600);转载 2018-03-01 20:44:09 · 7014 阅读 · 0 评论 -
什么是面向对象?主要特征是什么?
把一组数据结构和处理它们的方法组成对象(object),把相同行为的对象归纳为类(class),通过类的封装(encapsulation)隐藏内部细节,通过继承(inheritance)实现类的特化(specialization)泛化generalization),通过多态(polymorphism)实现基于对象类型的动态分派(dynamic dispatch)。面向对象的三个基本特征是:封装、继...转载 2018-03-01 20:44:05 · 3712 阅读 · 0 评论 -
单引号和双引号的区别:
单引号和双引号主要的区别还是在变量的解析上单引号会直接输出里面的字符串,不会把$符后面的东西当做变量解析后输出双引号则会判定里面是否存在变量,然后将变量解析成为字符串后再输出所谓单引号和双引号的界定永远是由最外层的引号决定的,看例子$name = '看看';echo '$name' //输出$nameecho "$name" //输出看看echo '我的名字是"$name"'; //输出我的名字是...原创 2018-03-01 20:46:11 · 2563 阅读 · 0 评论 -
构造方法是否可以重载
先来看看其他语言对于重载的定义: 重载是类的多态的一种实现,函数重载指一个方法名被用作多个函数名,且能够通过函数的参数个数或参数类型将这些同名的函数区分开.调用不发生混淆,当调用的时候,虽然方法名字相同,但是参数个数不同,所调用的方法也是不一样的在语法上,我们的php并不支持真正意义上的方法重载,但是可以利用__call的魔术方法实现实现原理:1.通过func_get_args()函数来得到该方法...原创 2018-03-01 20:47:11 · 6503 阅读 · 0 评论 -
常用字符串操作函数
strtolower(字符串)//转换成小写strtoupper(字符串)//转换成大写ucfirst(字符串)//首字母大写strrev(字符串)//按字节翻转字符串,所以中文不能翻转strpos(在哪个字符串中查找,需要查找的字符)//查找某个字符在字符串中第一次存在的位置 (从左往右)strrpos(在哪个字符串中查找,需要查找的字符)//查找某个字符在字符串中最后一次存在的位置 (从右往左...原创 2018-03-01 20:47:48 · 349 阅读 · 0 评论 -
PHP数组的排序方法
1.我们先看一些内置函数,以下函数都会改变参与排序的原数组sort() ->升序排序rsort() ->降序排序asort() ->根据值,对关联数组进行升序排序ksort() ->根据键,对关联数组进行降序排序arsort() ->根据值,对关联数组进行降序排序krsort() ->根据键,对关联数组进行降序排序2.我们再来看看利用简单的算法来进行数组排序冒泡...原创 2018-03-01 20:49:57 · 636 阅读 · 0 评论 -
RBAC最少需要几张表,简述实现原理
RBAC:基于角色的权限访问控制(Role-Base-Access Control)从RBAC0到RBAC3分别需要5到12张表1. RBAC0RBAC0是RBAC中的基础模型,后续的模型都是RBAC0的改进RBAC0引入了角色概念来解决用户与权限之间的分离问题,用户实际上没有权限,而只有给用户赋予某种角色之后,才拥有相应的权限.RBAC0主要解决了权限的分离问题数据表模型:我们需要5张表来完成R...原创 2018-03-01 20:52:27 · 5781 阅读 · 0 评论 -
PHP如何实现多线程
大概有两种方法:1. 使用shell_exech函数,以shell的方式,每添加一个线程,就相当于你使用php打开了一个shell进行独立的操作2. 给你的PHP添加Pthread扩展,然后使用Pthread所提供的API来操作PHP的多线程....原创 2018-03-01 20:53:06 · 2652 阅读 · 0 评论 -
PHP5和PHP7的垃圾回收机制有什么不同
php5和php7的垃圾回收机制都是利用引用计数我们先来看看什么叫做引用计数:由于PHP是用C来写的,C里面有一种东西叫做结构体,我们PHP的变量在C中就是用这种方式存储的每个PHP的变量都存在于一个叫做zval的容器中,一个zval容器,除了包含变量名和值,还包括两个字节的额外信息,一个叫做'is_ref',是个布尔值,用来表示这个变量是否属于引用集合,通过这个字节,我们php才能把普通变量和引...原创 2018-03-01 20:57:28 · 7431 阅读 · 0 评论 -
数据库优化的方案有哪些,请具体说明
原创 2018-03-01 21:23:18 · 489 阅读 · 0 评论