php基础面试题

1. 变量如何定义?如何检查变量是否认义?如何删除一个变量?判断一个变量是否为空的函数?
isset()
unset()
empty()
javascript

2. 什么是可变变量?
一个变量的变量名能够动态的设置和使用。
$a = 'hello' , $$a = 'world', ${$a}=hello world
php

3. 变量赋值方式有哪几种?
1)直接赋值
2)变量间赋值
3)引用赋值
css

4. 引用和拷贝有什么区别?
拷贝是将原来的变量内容复制下来,拷贝后的变量与原来的变量使用各自的内存,互不干扰。
引用至关因而变量的别名,其实就是用不一样的名字访问同一个变量内容。当改变其中一个变量的值时,另外一个也跟着发生变化。
html


5. php中变量有哪些基本数据类型?
php支持8种原始数据类型。
包括:
四种标量类型(布尔型boolean,整型interger,浮点型float/double , 字符串string)
两种复合类型(数组array , 对象object)
两种特殊类型(资源resource,NULL)
java


6. 其它类型转换为boolean类型时,哪些被认为是false?
布尔值false,整型值0, 浮点型值0.0, 空白字符串, 字符串'0', 空数组,特殊数据类型NULL, 没有设定的变量。
mysql

empty()函数在哪些状况下返回true?
布尔值false,
整型值0, 
浮点型值0.0, 
空白字符串, 
字符串'0', 
array()空数组,
特殊数据类型NULL, 
没有任何属性的对象,
没有赋值的变量。
jquery


7. 若是定义了一个变量$a ,可是没有赋初始值 
那么$a==0吗? 
$a==false吗? 
$a==''吗?
$a==NULL吗?
$a===NULL吗? 答:echo=>什么都没有 , var_dump=>NULL
empty($b)==true吗?———————————— echo=>1 , var_dump=>bool(true) 
此时若是输出$a++是多少?——————— echo=>什么都没有 , var_dump=>NULL
若是输出++$a又是多少?————————— echo=>1 , var_dump=>int(1)
web


8. 字符串怎么转成整数,有几种方法?怎么实现?
强制类型转换: (整型)字符串变量名;
直接转换:settype(字符串变量,整型);
intval(字符串变量);
ajax

9. 标量数据和数组的最大区别是什么?
一个标量只能存放一个数据,而数组能够存放多个数据。
正则表达式


10. 常量如何定义? 如何检测一个常量是否被定义?常量的值只能是哪些数据类型?
define()//定义常量 , defined()//检查常量是否认义
常量的值只能是标量类型的数据。


11. 常量分为系统内置常量和自定义常量。请说出最多见的几个系统内置常量?
__FILE__ , __LINE__ , PHP_OS , PHP_VERSION

12. 若是定义了两个相同的常量,前者和后者哪一个起做用?
前者起做用,由于常量一旦定义就不能被从新定义或者取消定义。


13. 常量和变量有哪些区别?
1)常量前没有$符号;
2)常量只能经过define()定义,而不能经过赋值语句定义;
3)常量能够在任何地方定义和访问,而变量有全局和局部之分;
4)常量一旦定义就不能被从新定义或者取消定义,而变量而经过赋值方式从新定义;
5)常量的值只能是标量数据,而变量的数据库类型有8种原始数据类型。


14. PHP中经常使用的几个预约义的全局数组变量是哪些?
有9大预约义的内置数组变量:
$_POST, $_GET, $_REQUEST, $_SESSION, $_COOKIE, $_FILES,$_SERVER, $_ENV, $GLOBALS

15. 在实际开发中,常量最经常使用于哪些地方?
1)链接数据库的信息定义成常量,如数据库服务器的用户名、密码、数据库名、主机名;
2)将站点的部分路径定义成常量,如web绝对路径,smarty的安装路径,model、view或者controller的文件夹路径;
3)网站的公共信息,如网站名称,网站关键词等信息。

16. 函数的优越性有哪些?
提升程序的可维护性
提升软件的可靠性
提升程序的可重用性
提升程序的开发效率


17. 如何定义一个函数?函数名区分大小写吗?
1)使用 function 关键字;
2)函数命名规则和变量同样,以字母或者下划线开头,而不能以数字开头;
3)函数名不区分大小写;
4)函数名不可使用已经声明过的或者系统自建的函数名称。


18. 什么是变量的能见度 或者 说是变量做用域?
就是变量在程序中的可做用范围。根据变量的能见度,变量分为局部变量和全局变量。


19. 什么是局部变量和全局变量?函数内是否能够直接调用全局变量?
局部变量是函数内部定义的变量,其做用域是所在的函数。若是函数外还有一个跟局部变量名字同样的变量,
程序会认为它们两个是彻底不一样的两个变量。当退出函数的时候,其中的局部变量就同时被清除。

全局变量是定义在全部函数之外的变量,其做用域是整个php文件,可是在用户自定义的函数内部是没法使用的。
若是必定要在用户自定义的函数内部使用全局变量,那么就须要使用global关键字声明。
也就是说若是在函数内的变量前加上golbal来修饰,那么函数内部就能够访问到这个全局变量,
不只能够利用这个全局变量进行运算并且能够对这个全局变量进行从新赋值。
全局变量还可使用 $GLOBALS['var'] 来调用。


20. global关键词如何使用?预约义的全局变量数组$GLOBALS如何使用?


21. 什么是静态变量?
若是一个函数内定义的变量前使用关键字static来声明,那么该变量就是静态变量。
通常函数内的变量在函数调用结束后,其存储的数据将被清除,所占的内存空间也被释放。而使用静态变量时,
该变量会在函数第一次被调用时被初始化,初始化后该变量也不会被清除,当再次调用该函数时,这个静态变量
再也不被初始化,而能保存上次函数执行完后的值。能够说静态变量在全部对该函数的调用之间共享。


22. php中函数传递参数的方式有哪些?二者有什么区别?
按值传递和按地址传递(或按引用传递)
(1)按值传递: 待传递的变量,与传递给函数以后的变量是存储在不一样的空间中。因此函数体内对
该变量值作的修改,不影响本来的变量值。
(2)按地址传递: 使用 & 符号,代表该参数是以地址的方式传递值。并不会将主程序中的指定数值或目标变量传递给函数,
而是把该数值或变量的内存储存区块地址导入函数之中,因此函数体内的该变量和主程序中的该变量在内存
中是同一个。函数体作的修改,直接影响到函数体外部的该变量的值。


23. 什么是递归函数?如何进行递归调用?
递归函数其实就是调用自身的函数,可是必须知足如下两个条件:
1)在每一次调用自身时,必须是更接近于最终结果;
2)必须有一个肯定的递归终止条件,不会形成死循环。
举例说明:
在实际工做中每每会在遍历文件夹的时候使用。
若是有个例子是但愿获取到目录windows下全部的文件,那么先遍历windows目录,若是发现其中还有文件夹,那么就会调用自身,继续往下寻找,依次类推,
直到遍历到再也没有文件夹为止,这也就是意味着遍历出来了全部的文件。


24. 判断一个函数是否存在?
function_exists( string $function_name ) 若是存在,返回true, 不存在则返回 false。

25. func()和@func()之间有什么区别?
第二个函数调用失败不会报错,第一个会报错

26. include()和require()函数的用法和区别是什么?include_once()和require_once()呢?
include和require出现错误后的错误级别不同
include_once()和require_once()在加载以前要判断是否已经导入

27. 说出前置++和后置++的区别?
前置++是先将变量增长1,而后在将值赋值给原来的变量;
后置++是先返回变量的当前值,而后再将变量的当前值增长1.


28. 字符串运算符“.”与算术运算符“+”有什么区别?
当“a”“b”之间使用.时认为是连字符。若是二者间是+的时候php会认为是一次运算。
1)若是+号两边的字符串是数字组成的,那么会将字符串自动转为整型;
2)若是+号两边是纯粹的字母,那么会输出0;
3)若是+号两边的字符串是以数字开头的,那么会截取字符串开头的数字,而后进行运算。


29. 什么是三目(或三元)运算符?
根据一个表达式的结果在另两个表达式中选择一个。
例如: ($a==true) ? 'good':'bad';


30. 控制流程语句有哪些?
1:三种程序结构 顺序结构、分支结构、循环结构
2:分支: if/esle/esleif/ switch/case/default
3: switch 须要注意的:
case子句中的常量能够是整型、字符串型常量、 或者常量表达式,不容许是变量。
同一个switch子句中,case的值不能相同,不然只能取到首次出现case中的值。
4: 循环 for while do...while
do...while 后面必须加入分号结尾。
while 和 do...while 的区别
5:break 和 continue 的区别。
break能够终止循环。
continue没有break强大,只能终止本次循环而进入到下一次循环中。


31. 数组的概念是什么?数组根据索引分为哪两种,如何区分?数组的赋值方式有哪两种?
数组是一个能够存储一组或一系列数值的变量(复合型变量)
索引数组(索引值为数字,以0开始)和关联数组(以字符串做为索引值)

数组的赋值方式有哪两种?
数组的声明方式主要有两种。
1.经过array()函数声明数组;
能够经过key=>value的方式分别定义索引和值,也能够不定义数组的索引下标,只给出数组的元素值。
2.直接为数组元素赋值,不须要调用array()函数。例如:
$arr[0] = 1;
$arr[1] = 2;
特别注意:
数组的下标若是是等价于整数的字符串值(但不能以0开头),则会被看成整数对待。
例如: $array[3] 与 $array['3'] 引用的是相同的一个元素,而 $array['03'] 引用的则就是另外的一个元素了。


32.数组如何遍历?
①for循环
②foreach循环 ,这是最经常使用的遍历方式。用法以下:foreach($arr as $key=>$value){}
③list each 和while 配合起来循环


33. foeach数组的时候指针是如何指向的?list()/each()/while()循环数组的时候指针如何指向的呢?
当foreach开始执行的时候,数组内部的指针会自动指向第一个单元。由于foreach所操做的是指定数组的拷贝,而不是该数组自己。
而each()一个数组后,数组指针将停留在数组中的下一个单元或者碰到数组结尾时停留在最后一个单元。若是要再次使用each()遍历数组,必需要使用reset().
reset()将数组的内部指针倒回到第一个单元并返回第一个数组单元的值。


34. 如何计算数组长度(或者说计算数组中全部元素的个数)?字符串怎么取长度?
count() -- 计算数组中的元素个数。
可使用count(数组名)或者count(数组名,1),若是有第二个参数,而且是数字1,则表示递归统计数组元素的个数。
若是第二个参数是数字0,则等同于只有一个参数的count()函数。
sizeof() -- count() 的别名
字符串:strlen()、mb_strlen();


35. 数组中相关的经常使用函数有哪些?
1) count --(sizeof别名)— 计算数组中的单元数目或对象中的属性个数 
例如:int count ( mixed $var [, int $mode ] ) $var 一般都是数组类型,任何其它类型都只有一个单元。$mode 默认值为0. 1为开启递归地对数组计数
2) in_array ( mixed $needle , array $haystack [, bool $strict ] ) — 检查数组中是否存在某个值。
若是 needle 是字符串,则比较是区分大小写的。
若是第三个参数 strict 的值为 TRUE 则 in_array() 函数还会检查 needle 的类型是否和 haystack 中的相同。
3) array_merge(array $array1 [, array $array2 [, array $... ]] ) 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回做为结果的数组。 
特别注意:若是输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,若是数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。 
若是只给了一个数组而且该数组是数字索引的,则键名会以连续方式从新索引

4) 数组与字符串之间的转换
(1)explode ( string $separator , string $string [, int $limit ] ) 使用一个分隔字符来分隔一个字符串。
(2)implode ( string $glue , array $arr ) 使用一个链接符将数组中的每一个单元链接为一个字符串。
join 为 implode 的别名

5) sort(array &$array [, int $sort_flags ]) — 对数组按照值排序,当本函数结束时数组单元将被从最低到最高从新安排。


36. 数组合并函数array_merge()和数组加法运算$arr + $arr2 的区别是什么?
array_merge()->使用array_merge(),若是是关联数组合并,若是数组的键名相同,那么后面的值将覆盖前者;若是是数字索引数组合并,则不覆盖,而是
后者附加到前者后面。
"+"->使用数组加法运算,与array_merge()不一样,加法运算无论是关联数组仍是数字索引数组,都是将相同键名的的值舍弃,
也就是只保留首次出现该键名的元素,后来的具备相同键名的元素都不会被加进来。


37. 字符串定义的时候单引号和双引号有什么区别?


38. echo(),print(),print_r()的区别?
(1)echo 是语法,Output one or more strings,没有返回值;
(2)print 是函数,不能输出数组和对象,Output a string,print有返回值;
(3)print_r 是函数,能够输出数组。print_r是个比较有意思的函数,能够输出stirng、int、float、
array、object等,输出array时会用结构表示,print_r输出成功时返回true;并且print_r能够经过print_r($str,true)来,使print_r不输出而返回print_r处理后的值。此外,对于echo和print,基本以使用echo居多,由于其效率比print要高。


39. 按照功能分类说说都有哪些字符串处理函数?这些函数的做用是什么?
A. 字符串输出函数
(1)echo $a,$b,$c......; 是一个语言结构,而不是一个真正的函数。
(2)print($a) 本函数输出字符串。若成功则返回 1,失败返回 0
(3)print_r($a)
(4)var_dump($a); 能输出类型、长度、值
B. 去除字符串首尾空格的函数: trim ltrim rtrim(别名:chop) 使用第二个参数,还能够去除指定的字符。
C. 转义字符串函数:addslashes()
D. 获取字符串长度的函数:strlen()
E. 截取字符串长度的的函数:substr()
F. 检索字符串函数: strstr() , strpos()
G. 替换字符串函数:str_replace()


40. 请给出如下问题的正确答案?
1).$arr = array('james', 'tom', 'symfony');请将$arr数组的值用’,’分割并合并成字符串输出?
echo implode(‘,’,$arr);

2).$str = ‘jack,james,tom,symfony’; 请将$str用’,’分割,并把分割后的值放到$arr数组中?
$arr = explode(‘,’,$str);

3).$arr = array(3,7,2,1,’d’,’abc’); 请将$arr按照从大到小的顺序排序,并保持其键值不变?
arsort($arr); print_r($arr);

4).$mail = “gaofei@163.com”; 请将此邮箱的域(163.com)取出来并打印,看最多能写出几种方法?
echo strstr($mail,'163');
echo substr($mail,7);
$arr = explode("@",$mail); echo $arr[1];

5). 若是有一个字符串,该字符串是“123,234,345,”。请问如何切割掉这个字符串最后一个逗号?

6). 获取随机数的函数有哪几个?mt_rand() 和 rand()哪一个执行速度快?


41.页面字符出现乱码,怎么解决?
1.首先考虑当前文件是否是设置了字符集。查看是否是meta标签中写了charset,若是是php页面还能够看看是否是
在header()函数中指定了charset;
例如:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
header(“content-type:text/html;charset=utf-8”);

2.若是设置了字符集(也就是charset),那么判断当前文件保存的编码格式是否跟页面设置的字符集保持一致,
二者必须保持统一;

3.若是涉及到从数据库提取数据,那么判断数据库查询时的字符集是否跟当前页面设置的字符集一致,二者必须统一,
例如:mysql_query(“set names utf8”)。


42. 正则表达式是什么?php中有哪些经常使用的跟正则相关的函数?请写出一个email的正则,中国手机号码和座机号码的正则表达式?
正则表达式是用于描述字符排列模式的一种语法规则。正则表达式也叫作模式表达式。
网站开发中正则表达式最经常使用于表单提交信息前的客户端验证。
好比验证用户名是否输入正确,密码输入是否符合要求,email、手机号码等信息的输入是否合法。
在php中正则表达式主要用于字符串的分割、匹配、查找和替换操做。

preg系列函数能够处理。具体有如下几个:

string preg_quote ( string str [, string delimiter] )
转义正则表达式字符 正则表达式的特殊字符包括:. \\ + * ? [ ^ ] $ ( ) { } = ! < > | :。
preg_replace -- 执行正则表达式的搜索和替换
mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit] )
preg_replace_callback -- 用回调函数执行正则表达式的搜索和替换
mixed preg_replace_callback ( mixed pattern, callback callback, mixed subject [, int limit] )
preg_split -- 用正则表达式分割字符串
array preg_split ( string pattern, string subject [, int limit [, int flags]] )

 


43. 若是想过滤掉某个字符串中全部的html标记使用哪一个函数?


44. preg_replace()和 str_ireplace()两个函数在使用上有什么不一样?preg_split()和split()函数如何使用?


45. 获取当前时间戳的函数主要有哪些?用PHP打印出今天的时间,格式是2010-12-10 22:21:21?
用PHP打印出前一天的时间格式是2010-12-10 22:21:21?如何把2010-12-25 10:30:25变成unix时间戳?

echo date ("Y-m-d H:i:s" ,strtotime(‘-1,days’)); 

date('Y-m-d H:i:s',time());

$unix_time = strtotime("2009-9-2 10:30:25");//变成unix时间戳
echo date("Y-m-d H:i:s",$unix_time);//格式化为正常时间格式


46. 在url中用get传值的时候,若中文出现乱码,应该用哪一个函数对中文进行编码?
用户在网站表单提交数据的时候,为了防止脚本攻击(好比用户输入<script>alert(111);</script>),php端接收数据的时候,应该如何处理?
使用urlencode()对中文进行编码,使用urldecode()来解码。 
使用htmlspecialchars($_POST[‘title’])来过滤表单传参就能够避免脚本攻击。


47. 链接数据库操做的步骤是什么?每一步的返回值是什么数据类型?尤为是mysql_query()返回什么数据类型?

48. 说说mysql_fetch_row() 和mysql_fetch_assoc()和mysql_fetch_array之间有什么区别?
第一个是返回结果集中的一行做为索引数组,第二个是返回关联数组,而第三个既能够返回索引数组也能够返回关联数组,取决于它的第二个参数 MYSQL_BOTH MYSQL_NUM MYSQL_ASSOC 默认为MYSQL_BOTH
$sql =”select * from table1”;
$result = mysql_query($sql);
mysql_fetch_array($result, MYSQL_NUM);

49. 请说出目前学过的返回是资源的函数?
答: mysql_connect();
mysql_query();只有这执行select的时候成功,才返回资源,失败返回FALSE
fopen();

50. 打开、关闭文件分别是什么函数? 文件读写是什么函数?删除文件是哪一个函数? 
判断一个文件是否存在是哪一个函数?新建目录是哪一个函数?


51. 文件上传须要注意哪些细节?怎么把文件保存到指定目录?怎么避免上传文件重名问题?
1.首现要在php.ini中开启文件上传;
2.在php.ini中有一个容许上传的最大值,默认是2MB。必要的时候能够更改;
3.上传表单必定要记住在form标签中写上enctype="multipart/form-data";
4. 提交方式 method 必须是 post;
5. 设定 type="file" 的表单控件;
6.要注意上传文件的大小MAX_FILE_SIZE、文件类型是否符合要求,上传后存放的路径是否存在。

能够经过上传的文件名获取到文件后缀,而后使用时间戳+文件后缀的方式为文件从新命名,这样就避免了重名。
能够本身设置上传文件的保存目录,与文件名拼凑造成一个文件路径,使用move_uploaded_file(),就能够完成
将文件保存到指定目录。


52. $_FILES是几维数组?第一维和第二维的索引下标分别是什么?批量上传文件的时候须要注意什么?
二维数组。第一维是上传控件的name,二维下标分别为name/type/tmp_name/size/error.

53. header()函数主要的功能有哪些?使用过程当中注意什么?
答:

54. 文件下载的时候若是使用header()函数?
答:header("content-type: application/octet-stream;charset=UTF-8"); //在这里加utf-8和在上面定义有什么区别?、??
header("accept-ranges: bytes");
header("accept-length: ".filesize($filedir.$filename));
header("content-disposition: attachment; filename=".$filedir.$filename);


55. 什么是ajax?ajax的原理是什么?ajax的核心技术是什么?ajax的优缺点是什么?
ajax是asynchronous javascript and xml的缩写,是javascript、xml、css、DOM等多个技术的组合。'$'是jQuery的别名.

页面中用户的请求经过ajax引擎异步地与服务器进行通讯,服务器将请求的结果返回给这个ajax引擎,
最后由这个ajax引擎来决定将返回的数据显示到页面中的指定位置。Ajax最终实现了在一个页面的指定位置能够加载另外一个页面全部的输出内容。
这样就实现了一个静态页面也能获取到数据库中的返回数据信息了。因此ajax技术实现了一个静态网页在不刷新整个页面的状况下与服务器通讯,
减小了用户等待时间,同时也从而下降了网络流量,加强了客户体验的友好程度。

Ajax的优势是:
1. 减轻了服务器端负担,将一部分之前由服务器负担的工做转移到客户端执行,利用客户端闲置的资源进行处理;
2. 在只局部刷新的状况下更新页面,增长了页面反应速度,使用户体验更友好。
Ajax的缺点是不利于seo推广优化,由于搜索引擎没法直接访问到ajax请求的内容。
ajax的核心技术是XMLHttpRequest,它是javascript中的一个对象。

56. jquery是什么?jquery简化ajax后的方法有哪些?
jQuery是Javascript的一种框架。
$.get(),$.post(),$.ajax()。$是jQuery对象的别名。

代码以下:
$.post(异步访问的url地址 , {'参数名' : 参数值} , function(msg){
$("#result").html(msg);
});

$.get(异步访问的url地址 , {'参数名' : 参数值} , function(msg){
$("#result").html(msg);
});

$.ajax({
type: "post",
url: loadUrl,
cache:false,
data: "参数名=" + 参数值,
success: function(msg) {
$("#result").html(msg);
}
});


57. 什么是会话控制?
简单地说会话控制就是跟踪和识别用户信息的机制。会话控制的思想就是可以在网站中跟踪一个变量,经过这个变量,
系统能识别出相应的用户信息,根据这个用户信息能够得知用户权限,从而展现给用户适合于其相应权限的页面内容。
目前最主要的会话跟踪方式有cookie,session。

58. 会话跟踪的基本步骤
1).访问与当前请求相关的会话对象
2).查找与会话相关的信息
3).存储会话信息
4).废弃会话数据

59. 使用cookie的注意事项有哪些?
1) setcookie()以前不能够有任何页面输出,就是空格,空白行也不能够;
2) setcookie()后,在当前页面调用$_COOKIE['cookiename']不会有输出,必须刷新或到下一个页面才能够看到cookie值;
3) 不一样的浏览器对cookie处理不一样,客户端能够禁用cookie,浏览器也能够闲置cookie的数量,一个浏览器能建立的cookie数量最多300个,而且每一个不能够超过4kb,
每一个web站点能设置的cookie总数不能超过20个。
4) cookie是保存在客户端的,用户禁用了cookie,那么setcookie就不会起做用了。因此不能够过分依赖cookie。

60. 使用session的时候,经过什么来表示当前用户,从而与其余用户进行区分?
sessionid,经过session_id()函数能够取得当前的session_id。

61. session和cookie的使用步骤分别是什么?什么是sesssion和cookie的生命周期?session和cookie的区别是什么?
cookie是保存在客户端机器的,对于未设置过时时间的cookie,cookie值会保存在机器的内存中,只要关闭浏览器则
cookie自动消失。若是设置了cookie的过时时间,那么浏览器会把cookie以文本文件的形式保存到硬盘中,
当再次打开浏览器时cookie值依然有效。

session是把用户须要存储的信息保存在服务器端。每一个用户的session信息就像是键值对同样存储在服务器端,
其中的键就是sessionid,而值就是用户须要存储信息。服务器就是经过sessionid来区分存储的session信息是
哪一个用户的。

二者最大的区别就是session存储在服务器端,而cookie是在客户端。session安全性更高,而cookie安全性弱。

session在web开发中具备很是重要的分量。它能够将用户正确登陆后的信息记录到服务器的内存中,当用户以此身份
访问网站的管理后台时,无需再次登陆便可获得身份确认。而没有正确登陆的用户则不分配session空间,即使输入了
管理后台的访问地址也不能看到页面内容。经过session肯定了用户对页面的操做权限。

使用session的步骤:
1. 启动session:
使用session_start()函数来启动。
2. 注册会话:
直接给$_SESSION数组添加元素便可。
3. 使用会话:
判断session是否为空或者是否已经注册,若是已经存在则像普通数组使用便可。
4. 删除会话:
1.可使用unset删除单个session;
2.使用$_SESSION=array()的方式,一次注销全部的会话变量;
3.使用session_destroy()函数来完全销毁session。


cookie怎么使用?
1. 记录用户访问的部分信息
2. 在页面间传递变量
3. 将所查看的internet页存储在cookies临时文件夹中,能够提升之后的浏览速度。

建立cookie:
setcookie(string cookiename , string value , int expire);
读取cookie:
经过超级全局数组$_COOKIE来读取浏览器端的cookie的值。
删除cookie:有两种方法
1.手工删除方法:
右击浏览器属性,能够看到删除cookies,执行操做便可将全部cookie文件删除。
2.setcookie()方法:
跟设置cookie的方法同样,不过此时将cookie的值设置为空,有效时间为0或小于当前时间戳。

62. 如何设置一个cookie的名字为username,值为jack,而且让此cookie一周后失效?
一个浏览器最多能够产生多少个cookie,每一个cookie文件最大不能超过多少?
setcookie(‘username’,’jack’,time()+7*24*3600);
最多能够产生20个cookie,每一个最多不超过4K


63. 设置或读取session以前,须要作什么?
能够直接在php.ini中开启session.auto_start = 1或者在页面头部用session_start();
开启session,session_start()前面不能有任何输出,包括空行。


64. 在实际开发中,session在哪些场合使用?
session用来存储用户登陆信息和用在跨页面传值。
1)经常使用在用户登陆成功后,将用户登陆信息赋值给session;
2)用在验证码图片生成,当随机码生成后赋值给session。

65. 注销session会话的形式有几种?
unset() $_SESSION=array();session_destroy();

相关文章
相关标签/搜索