整理了一些PHP基础题库。
问题1: 写出如下程序的输出结果:
$test = 'aaaaa';
$abc = &$test;
unset($test);
echo $abc; //aaaaa
//知识点:引用传值
问题2: 说明 PHP 中传值和传引用的区别,说明什么时候传值,说明什么时候用引用
传 值:将变量的值拷贝一份赋值给另一个变量,改变任何一个变量的值都不会影响另一个。
传引用:将变量的值的内存地址传给另一个变量,新变量简单的引用了原始变量,两个变量指向同一个值,
改动会相互影响。
对于较大的数据,传引用比较好,可以节省内存的开销。
问题3: 写出如下程序的输出结果:
$count = 5;
function get_count(){
static $count = 0;
return $count++;
}
echo $count; //5
++$count;
echo get_count(); //0
echo get_count(); //1
?>
问题4: PHP 在服务端进行页面重定向所使用的函数名称
header("Localtion:http://www.baidu.com");
header("HTTP/1.0 404 Not Found");
header('Content-type:application/pdf');
header('Content-type:text/html;charset=urf-8');
问题5: 什么事面向对象?主要特征是什么?
面向对象是程序的一种设计方式,它利于提高程序
的重用性,使程序结构更加清晰。主要特征:封装、继承、多态
问题 6: SESSION 与 COOKIE 的区别是什么,请从协议,产生的原因与作用说明?
1、http 无状态协议,不能区分用户是否是从同一个网站上来的,同一个用户请求不同的页面不能看做是同
一个用户。
2、SESSION 存储在服务器端,COOKIE 保存在客户端。Session 比较安全,cookie 用某些手段可以修
改,不安全。Session 依赖于 cookie 进行传递。
禁用 cookie 后,session 不能正常使用。
Session 的缺点:保存在服务器端,每次读取都从服务器进行读取,
对服务器有资源消耗。Session 保存在服务器端的文件或数据库中,默认保存在文件中,
文件路径由 php 配置文件的 session.save_path 指定。Session 文件是公有的
问题 7: 简述 Cookie 的设置及获取过程
设置 COOKIE 的值:
Setcookie(名称,值,保存时间,有效域);
获取值:$_COOKIE['名称'];
问题 8: HTTP 状态中 302 、403、 500 ,200 ,404 、502 代码含义?
一二三四五原则: 一. 消息系列 二. 成功系列
三. 重定向系列 四. 请求错误系列 五. 服务器端错误系列
302:临时转移成功,请求的内容已转移到新位置
403:禁止访问 500:服务器内部错误 401 代表未授权。
北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090
200 是请求成功,404 是文件未找到,502 是服务器内部错误
问题 9: 请写出数据类型 (int char varchar datetime text) 的意思;请问 varchar和char有什么区别?
Int 整数 char 定长字符 Varchar 变长字符
Datetime 日期时间型 Text 文本型 Varchar 与 char 的区别 char 是固定长度的字符类型,分配多少空
间,就占用多长空间。
Varchar 是可变长度的字符类型,内容有多大就占用多大的空间,能有效节省空间。
Varchar 是变长,节省存储空间,char 是固定长度。
查找效率要 char 型快,因为 varchar 是非定长,必须先查找长度,
然后进行数据的提取,比 char 定长类型多了一个步骤,所以效率低一些
问题 10: 写出下列几个预定义全局变量的作用?
$_SERVER['DOCUMENT_ROOT'] //当前运行脚本所在的文档根目录
$_SERVER['HTTP_HOST ']//当前请求的 Host: 头部的内容
$_SERVER['REMOTE_ADDR']//正在浏览当前页面用户的 IP 地址
$_SERVER['HTTP_REFERER'] //链接到当前页面的前一页面的 URL 地址
$_SERVER['SERVER_NAME'] //当前运行脚本所在服务器主机的名称
$_FILES//包含有所有上传的文件信息
S_FILES['userfile']['name']//客户端机器文件的原名称
$_FILES['userfile']['type']//文件 MIME 类型,如果浏览器提供此信息的话,如“image/gif”。
北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090
$_FILES['userfile']['size']//已上传文件的大小,单位为字节
$_FILES['userfile']['tmp_name'] //文件被上传后在服务端储存的临时文件名 $_FILES['userfile']['error']
//和该文件上传相关的错误代码
问题 11: include 和 require 都能把另外一个文件包含到当前文件中,他们有什么区别?Include 和 include_once 又有什么区别?
二者区别只有一个,那就是对包含文件的需求程度,include 就是包含,如果被包含的文件不存在的话,那
么则会提示一个错误,但是程序会继续执行下去。
而 require 意思是需要,如果被包含文件不存在或者无法打开的时候,则会提示错误,并且会终止程序的
执行。
这两种结构除了在 如何处理失 败之外完全一 样。 once 的意思 是一次,那么 include_once 和
require_once 表示只包含一次,避免重复包含。
问题 12: 请说明 php 中传值与传引用的区别。什么时候传值什么时候传引用?
变量默认总是传值赋值。那也就是说,当将一个表达式的值赋予一个变量时,整个原始表达式的值被赋值到
目标变量。这意味着,例如,当一个变量的值赋予另外一个变量时,改变其中一个变量的值,将不会影响到另外
一个变量。
PHP 也提供了另外一种方式给变量赋值:引用赋值。这意味着新的变量简单的引用(换言之,“成为其
别名”或者“指向”)了原始变量。改动新的变量将影响到原始变量,反之亦然。使用引用赋值,简单地将一
个 & 符号加到将要赋值的变量前(源变量)。
对象默认是传引用。对于较大的数据,传引用比较好,这样可以节省内存的开销。
问题 13: PHP 中的注释的写法,要列出三种?
// 注释内容 C 风格的单行注释
# 注释内容 unix 风格的单行注释
/* 注释内容 */ C 风格的多行注释
问题 14: PHP 的意思,它能干些什么?
PHP( Hypertext Preprocessor,超文本预处理器的字母缩写)是一种被广泛应用的开放源代码的多用途
脚本语言,它可嵌入到 HTML 中,尤其适合 web 开发。
PHP 能做任何事。PHP 主要是用于服务端的脚本程序,因此可以用 PHP 来完成任何其它的 CGI 程序
能够完成的工作,例如收集表单数据,生成动态网页,或者发送/接收 Cookies。但 PHP 的功能远不局限
于此。
PHP 脚本主要用于以下三个领域:
1) 服务端脚本。这是 PHP 最传统,也是最主要的目标领域。
2) 命令行脚本。可以编写一段 PHP 脚本,并且不需要任何服务器或者浏览器来运行它。
通过这种方式,仅仅只需要 PHP 解析器来执行。
3) 编写桌面应用程序。
问题 15: 用 PHP 写出显示客户端 IP 与服务器 IP 的代码。
客户端 IP:$_SERVER["REMOTE_ADDR"]
服务器端 IP:$_SERVER["SERVER_ADDR"]
问题 16: 简述如何得到当前执行脚本路径,包括所得到参数 。
获取当前执行脚本路径使用$_SERVER["SCRIPT_FILENAME"] 或 __FILE__ 获取参数,
使用$_SERVER["QUERY_STRING"]
问题 17: 表单中 get 与 post 提交方法的区别?
1. get 是把参数数据队列加到提交表单的 ACTION 属性所指的 URL 中,值和表单内各个字段一一对应,
在 URL 中可以看到。post 是通过 HTTP post 机制,将表单内各个字段与其内容放置在 HTML HEADER
内一起传送到 ACTION 属性所指的 URL 地址。用户看不到这个过程。
2. 对 于 get 方 式 , 服 务 器 端 用 Request.QueryString 获取变量的值,对于 post 方式,
服务器端用 Request.Form 获取提交的数据。
3. get 传送的数据量较小,不能大于 2KB。post 传送的数据量较大,一般被默认为不受限制。
但理论上,IIS4 中最大量为 80KB,IIS5 中为 100KB。get 安全性非常低,post 安全性较高。
问题 18: echo(),print(),print_r() 的区别?
echo 是 PHP 语句, print 和 print_r 是函数,语句没有返回值,函数可以有返回值(即便没有用)
Print()只能打印出简单类型变量的值(如 int,string)
print_r()可以打印出复杂类型变量的值(如数组,对象)
echo 输出一个或者多个字符串
问题 19: 面向对象中接口和抽象类的区别及应用场景?
1、有抽象方法的类叫做抽象类,抽象类中不一定有抽象方法,抽象方法必须使用 abstract 关键字定义。
2、接口中全部是抽象方法,方法不用使用 abstract 定义。
3、当多个同类的类要设计一个上层,通常设计为抽象类,当多个异构的类要设计一个上层,通常设计为接
口。
问题 20: 描述一下 HTTP 与 HTTPS 的区别?
https 协议需要到 ca 申请证书,一般免费证书很少,需要交费。
http 是超文本传输协议,信息是明文传输,https 则是具有安全性的 ssl加密传输协议
http 和 https 使用的是完全不同的连接方式用的端口也不一样,前者是 80,后者是 443。
http 的连接很简单,是无状态的
HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议 要比 http 协议安全