php面试题及答案(原创)收藏
基础题:
1.表单中get与post提交方法的区别?
答:get是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据,可以通过表单提交大量信息.
2.session与cookie的区别?
答:session:储存用户访问的全局唯一变量,存储在服务器上的php指定的目录中的(session_dir)的位置进行的存放
cookie:用来存储连续訪問一个頁面时所使用,是存储在客户端,对于Cookie来说是存储在用户WIN的Temp目录中的。
两者都可通过时间来设置时间长短
3.数据库中的事务是什么?
答:事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成,
事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。
简述题:
1、用PHP打印出前一天的时间格式是2006-5-10 22:21:21(2分)****************
答:echo date('Y-m-d H:i:s', strtotime('-1 days'));
2、echo(),print(),print_r()的区别(3分)
答:echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用) print()只能打印出简单类型变量的值(如int,string)
print_r()可以打印出复杂类型变量的值(如数组,对象)
echo 输出一个或者多个字符串
3、能够使HTML和PHP分离开使用的模板(1分)
答:Smarty,Dwoo,TinyButStrong,Template Lite,Savant,phemplate,XTemplate
5、使用哪些工具进行版本控制?(1分)
答:cvs,svn,vss;
6、如何实现字符串翻转?(3分)
答:echo strrev($a);
7、优化MYSQL数据库的方法。(4分,多写多得)
答:
1、选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置NOT NULL,例如'省份,性别',最好设置为ENUM
2、使用连接(JOIN)来代替子查询:
3、使用联合(UNION)来代替手动创建的临时表
4、事务处理:
5、锁定表,优化事务处理:
6、使用外键,优化锁定表
7、建立索引:
8、优化查询语句
8、PHP的意思(送1分)
答:PHP是一个基于服务端来创建动态网站的脚本语言,您可以用PHP和HTML生成网站主页
9、MYSQL取得当前时间的函数是?,格式化日期的函数是(2分)
答:now(),date()
10、实现中文字串截取无乱码的方法。(3分)****************
Mb_substr
答:function GBsubstr($string, $start, $length) {
if(strlen($string)>$length){
$str=null;
$len=$start+$length;
for($i=$start;$i<$len;$i++){
if(ord(substr($string,$i,1))>0xa0){
$str.=substr($string,$i,2);
$i++;
}else{
$str.=substr($string,$i,1);
}
}
return $str.'...';
}else{
return $string;
}
}
11、您是否用过版本控制软件? 如果有您用的版本控制软件的名字是?(1分)
12、您是否用过模板引擎? 如果有您用的模板引擎的名字是?(1分)
答:用过,smarty
13、请简单阐述您最得意的开发之作(4分)
答:信息分类
14、对于大流量的网站,您采用什么样的方法来解决访问量问题?(4分)
答:确认服务器硬件是否足够支持当前的流量,数据库读写分离,优化数据表, 程序功能规则,禁止外部的盗链,控制大文件的下载,使用不同主机分流主要流量
15、用PHP写出显示客户端IP与服务器IP的代码1分)
答:打印客户端IP:echo $_SERVER[‘REMOTE_ADDR’]; 或者: getenv('REMOTE_ADDR');
打印服务器IP:echo gethostbyname("https://www.sodocs.net/doc/9514144860.html,")
16、语句include和require的区别是什么?为避免多次包含同一文件,可用(?)语句代替它们? (2分) 答:require->require是无条件包含也就是如果一个流程里加入require,无论条件成立与否都会先执行require
include->include有返回值,而require没有(可能因为如此require的速度比include快)
注意:包含文件不存在或者语法错误的时候require是致命的,include不是
17、如何修改SESSION的生存时间(1分).
答:方法1:将php.ini中的session.gc_maxlifetime设置为9999重启apache
方法2:$savePath = "./session_save_dir/";
$lifeTime = 小时* 秒;
session_save_path($savePath);
session_set_cookie_params($lifeTime);
session_start();
方法3:setcookie() and session_set_cookie_params($lifeTime);
18、有一个网页地址, 比如PHP开发资源网主页: https://www.sodocs.net/doc/9514144860.html,/index.html,如何得到它的内容?($1分)
答:方法1(对于PHP5及更高版本):
$readcontents = fopen("https://www.sodocs.net/doc/9514144860.html,/index.html", "rb");
$contents = stream_get_contents($readcontents);
fclose($readcontents);
echo $contents;
方法2:
echo file_get_contents("https://www.sodocs.net/doc/9514144860.html,/index.html");
19、在HTTP 1.0中,状态码401的含义是(?);如果返回“找不到文件”的提示,则可用header 函数,其语句为(?);(2分)
答:状态401代表未被授权,header("Location:www.xxx.php");
12、在PHP中,heredoc是一种特殊的字符串,它的结束标志必须?(1分)
答:heredoc的语法是用"<<<"加上自己定义成对的标签,在标签范围內的文字视为一个字符串例子:
$str = << my name is Jiang Qihui! SHOW; 13、谈谈asp,php,jsp的优缺点(1分) 答:ASP全名Active Server Pages,是一个WEB服务器端的开发环境,利用它可以产生和运 行动态的、交互的、高性能的WEB服务应用程序。ASP采用脚本语言VB Script(Java script )作为自己的开发语言。 PHP是一种跨平台的服务器端的嵌入式脚本语言. 它大量地借用C,Java和Perl语言的语法 , 并耦合PHP自己的特性,使WEB开发者能够快速地写出动态生成页面.它支持目前绝大多数数据库。还有一点,PHP是完全免费的,不用花钱,你可以从PHP官方站点(http://www.php.ne t)自由下载。而且你可以不受限制地获得源码,甚至可以从中加进你自己需要的特色。 JSP 是Sun公司推出的新一代站点开发语言,他完全解决了目前ASP,PHP的一个通病--脚本级执行(据说PHP4 也已经在Zend 的支持下,实现编译运行).Sun 公司借助自己在Jav a 上的不凡造诣,将Java 从Java 应用程序和Java Applet 之外,又有新的硕果,就是Js p--Java Server Page。Jsp 可以在Serverlet和JavaBean的支持下,完成功能强大的站点 程序。 三者都提供在HTML 代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。但JSP代码被编译成Servlet 并由Java 虚拟机解释执行,这种编译操作仅在对JSP 页面的 第一次请求时发生。在ASP 、PHP、JSP 环境下,HTML 代码主要负责描述信息的显示样式,而程序代码则用来描述处理逻辑。普通的HTML 页面只依赖于Web 服务器,而ASP 、PH P、JSP 页面需要附加的语言引擎分析和执行程序代码。程序代码的执行结果被重新嵌入到HTML 代码中,然后一起发送给浏览器。ASP 、PHP、JSP三者都是面向Web 服务器的技术 ,客户端浏览器不需要任何附加的软件支持。 14、谈谈对mvc的认识(1分) 答:由模型(model),视图(view),控制器(controller)完成的应用程序 由模型发出要实现的功能到控制器,控制器接收组织功能传递给视图; 15、写出发贴数最多的十个人名字的SQL,利用下表:members(id,username,posts,pass,email)(2分) 答:SELECT * FROM `members` ORDER BY posts DESC limit 0,10; 16. 请说明php中传值与传引用的区别。什么时候传值什么时候传引用?(2分) 答:按值传递:函数范围内对值的任何改变在函数外部都会被忽略 按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改 优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。 按引用传递则不需要复制值,对于性能提高很有好处。 17. 在PHP中error_reporting这个函数有什么作用? (1分) 答:设置错误级别与错误信息回报 18. 请写一个函数验证电子邮件的格式是否正确(2分) 答:function checkEmail($email) { $pregEmail = "/([a-z0-9]*[-_\.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,3}([\.][a-z]{2})?/i"; return preg_match($pregEmail,$email); } 19. 简述如何得到当前执行脚本路径,包括所得到参数。(2分) 答:$script_name = basename(__file__); print_r($script_name); 21、JS表单弹出对话框函数是?获得输入焦点函数是? (2分) 答:弹出对话框: alert(),prompt(),confirm() 获得输入焦点focus() 22、JS的转向函数是?怎么引入一个外部JS文件?(2分) 答:window.location.href, 23、foo()和@foo()之间有什么区别?(1分) 答:@foo()控制错误输出 24、如何声明一个名为”myclass”的没有方法和属性的类? (1分) 答:class myclass{ } 25、如何实例化一个名为”myclass”的对象?(1分) 答:new myclass() 26、你如何访问和设置一个类的属性? (2分) 答:$object = new myclass(); $newstr = $object->test; $object->test = "info"; 27、mysql_fetch_row() 和mysql_fetch_array之间有什么区别? (1分) 答:mysql_fetch_row是从结果集取出1行数组,作为枚举 mysql_fetch_array是从结果集取出一行数组作为关联数组,或数字数组,两者兼得 28、GD库是做什么用的? (1分) 答:gd库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片。 在网站上GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表。 29、指出一些在PHP输入一段HTML代码的办法。(1分) 答:echo "aaa"; 30、下面哪个函数可以打开一个文件,以对文件进行读和写操作?(1分) (a) fget() (b) file_open() (c) fopen() (d) open_file() [ c ] 31、下面哪个选项没有将john 添加到users 数组中? (1分) (a) $users[] = ‘john’; (b) array_add($users,’john’); (c) array_push($users,‘john’); (d) $users ||= ‘john’; [ a , c ] 32、下面的程序会输入是否?(1分) $num = 10; function multiply(){ $num = $num * 10; } multiply(); echo $num; ?> 输出:10 33、使用php写一段简单查询,查出所有姓名为“张三”的内容并打印出来(2分) 表名User Name Tel Content Date 张三133******** 大专毕业2006-10-11 张三136******** 本科毕业2006-10-15 张四021-******** 中专毕业2006-10-15 请根据上面的题目完成代码: $mysql_db=mysql_connect("local","root","pass"); @mysql_select_db("DB",$mysql_db); $result = mysql_query("SELECT * FROM `user` WHERE name='张三'"); while($rs = mysql_fetch_array($result)){ echo $rs["tel"].$rs["content"].$rs["date"]; } 34、如何使用下面的类,并解释下面什么意思?(3) class test{ function Get_test($num){ $num=md5(md5($num)."En"); return $num; } } 答:$testnum = "123"; $object = new test(); $encrypt = $object->Get_test($testnum); echo $encrypt; 类test里面包含Get_test方法,实例化类调用方法多字符串加密 35、写出SQL语句的格式: 插入,更新,删除(4分) 表名User Name Tel Content Date 张三133******** 大专毕业2006-10-11 张三136******** 本科毕业2006-10-15 张四021-******** 中专毕业2006-10-15 (a) 有一新记录(小王132******** 高中毕业2007-05-06)请用SQL语句新增至表中 mysql_query("INSERT INTO `user` (name,tel,content,date) V ALUES ('小王','132********','高中毕业','2007-05-06')") (b) 请用sql语句把张三的时间更新成为当前系统时间 $nowDate = date("Ymd"); mysql_query("UPDATE `user` SET date='".$nowDate."' WHERE name='张山'"); (c) 请写出删除名为张四的全部记录 mysql_query("DELETE FROM `user` WHERE name='张四'"); 36、请写出数据类型(int char varchar datetime text)的意思; 请问varchar和char有什么区别(2分) 答:int是数字类型,char固定长度字符串,varchar实际长度字符串,datetime日期时间型,text文本字符串 char的场地固定为创建表设置的长度,varchar为可变长度的字符 38、写出以下程序的输出结果(1分) $b=201; $c=40; $a=$b>$c?4:5; echo $a; ?> 答:4 39、检测一个变量是否有设置的函数是否?是否为空的函数是?(2分) 答:isset($str),empty($str); 40、取得查询结果集总数的函数是?(1分) 答:mysql_num_rows($result); 41、$arr = array('james', 'tom', 'symfony'); 请打印出第一个元素的值(1分) 答:echo $array[0]; 42、请将41题的数组的值用','号分隔并合并成字串输出(1分) 答:for($i=0;$i 43、$a = 'abcdef'; 请取出$a的值并打印出第一个字母(1分) 答:echo $a{0} 或echo substr($a,0,1) 44、PHP可以和sql server/oracle等数据库连接吗?(1分) 答:当然可以 45、请写出PHP5权限控制修饰符(3分) 答:public(公共),private(私用),protected(继承) 46、请写出php5的构造函数和析构函数(2分) 答:__construct , __destruct 47、完成以下: (一)创建新闻发布系统,表名为message有如下字段(3分) id 文章id title 文章标题 content 文章内容 category_id 文章分类id hits 点击量 答:CREATE TABLE 'message'( 'id' int(10) NOT NULL auto_increment, 'title' varchar(200) default NULL, 'content' text, 'category_id' int(10) NOT NULL, 'hits' int(20), PRIMARY KEY('id'); )ENGINE=InnoDB DEFAULT CHARSET=utf8; (二)同样上述新闻发布系统:表comment记录用户回复内容,字段如下(4分) comment_id 回复id id 文章id,关联message表中的id comment_content 回复内容 现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面 文章id 文章标题点击量回复数量 用一个SQL语句完成上述查询,如果文章没有回复则回复数量显示为0 答:SELECT message.id id,message.title title,IF(message.`hits` IS NULL,0,message.`hits`) hits, IF(comment.`id` is NULL,0,count(*)) number FROM message LEFT JOIN comment ON message.id=comment.id GROUP BY message.`id`; (三)上述内容管理系统,表category保存分类信息,字段如下(3分) category_id int(4) not null auto_increment; categroy_name varchar(40) not null; 用户输入文章时,通过选择下拉菜单选定文章分类 写出如何实现这个下拉菜单 答:function categoryList() { $result=mysql_query("select category_id,categroy_name from category") or die("Invalid query: " . mysql_error()); print(" while($rowArray=mysql_fetch_array($result)) { print("\n"); } print(""); } 编程题: 1. 写一个函数,尽可能高效的,从一个标准url 里取出文件的扩展名 例如: https://www.sodocs.net/doc/9514144860.html,/abc/de/fg.php?id=1 需要取出php 或 .php 答案1: function getExt($url){ $arr = parse_url($url); $file = basename($arr['path']); $ext = explode(".",$file); return $ext[1]; } 答案2: function getExt($url) { $url = basename($url); $pos1 = strpos($url,"."); $pos2 = strpos($url,"?"); if(strstr($url,"?")){ return substr($url,$pos1 + 1,$pos2 - $pos1 - 1); } else { return substr($url,$pos1); } } 2. 在HTML 语言中,页面头部的meta 标记可以用来输出文件的编码格式,以下是一个标准的meta 语句 请使用PHP 语言写一个函数,把一个标准HTML 页面中的类似meta 标记中的charset 部分值改为big5 请注意: 1. 需要处理完整的html 页面,即不光此meta 语句 2. 忽略大小写 3. ' 和" 在此处是可以互换的 4. 'Content-Type' 两侧的引号是可以忽略的,但'text/html; charset=gbk' 两侧的不行 5. 注意处理多余空格 3. 写一个函数,算出两个文件的相对路径 如$a = '/a/b/c/d/e.php'; $b = '/a/b/12/34/c.php'; 计算出$b 相对于$a 的相对路径应该是 ../../c/d将()添上 答:function getRelativePath($a, $b) { $returnPath = array(dirname($b)); $arrA = explode('/', $a); $arrB = explode('/', $returnPath[0]); for ($n = 1, $len = count($arrB); $n < $len; $n++) { if ($arrA[$n] != $arrB[$n]) { break; } } if ($len - $n > 0) { $returnPath = array_merge($returnPath, array_fill(1, $len - $n, '..')); } $returnPath = array_merge($returnPath, array_slice($arrA, $n)); return implode('/', $returnPath); } echo getRelativePath($a, $b); 填空题: 1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量__$_SERVER['PHP_SELF']__中;而链接到当前页面的URL记录在预定义变量__$_SERVER['HTTP_REFERER']__ 中 2.执行程序段将输出__0__。 3.在HTTP 1.0中,状态码401 的含义是____;如果返回“找不到文件”的提示,则可用header 函数,其语句为____。 4.数组函数arsort 的作用是__对数组进行逆向排序并保持索引关系__;语句error_reporting(2047)的作用是__报告所有错误和警告__。 5.PEAR中的数据库连接字符串格式是____。 6.写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把scrīpt标记及其内容都去掉):preg_replace("//si", "newinfo", $script); 7.以Apache模块的方式安装PHP,在文件http.conf中首先要用语句____动态装载PHP模块,然后再用语句____使得Apache把所有扩展名为php的文件都作为PHP脚本处理。 LoadModule php5_module "c:/php/php5apache2.dll" , AddType application/x-httpd-php .php, 8.语句include 和require 都能把另外一个文件包含到当前文件中,它们的区别是____;为了避 免多次包含同一文件,可以用语句__require_once||include_once__来代替它们。 9.类的属性可以序列化后保存到session 中,从而以后可以恢复整个类,这要用到的函数是____。 10.一个函数的参数不能是对变量的引用,除非在php.ini中把__allow_call_time_pass_reference boolean__设为on. 11.SQL中LEFT JOIN的含义是__自然左外链接__。如果tbl_user记录了学生的姓名(name)和学号(ID),tbl_score记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID) 和考试成绩(score)以及考试科目(subject),要想打印出各个学生姓名及对应的的各科总成绩,则可以用SQL语句____。 12.在PHP中,heredoc是一种特殊的字符串,它的结束标志必须____。 编程题: 13.写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。 答: function my_scandir($dir) { $files = array(); if ( $handle = opendir($dir) ) { while ( ($file = readdir($handle)) !== false ) { if ( $file != ".." && $file != "." ) { if ( is_dir($dir . "/" . $file) ) { $files[$file] = scandir($dir . "/" . $file); }else { $files[] = $file; } } } closedir($handle); return $files; } } 14.简述论坛中无限分类的实现原理。 答: /* 数据表结构如下: CREATE TABLE `category` ( `categoryID` smallint(5) unsigned NOT NULL auto_increment, `categoryParentID` smallint(5) unsigned NOT NULL default '0', `categoryName` varchar(50) NOT NULL default '', PRIMARY KEY (`categoryID`) ) ENGINE=MyISAM DEFAULT CHARSET=gbk; INSERT INTO `category` ( `categoryParentID`, `categoryName`) V ALUES (0, '一级类别'), (1, '二级类别'), (1, '二级类别'), (1, '二级类别'), (2, '三级类别'), (2, '333332'), (2, '234234'), (3, 'aqqqqqd'), (4, '哈哈'), (5, '66333666'); */ //指定分类id变量$category_id,然后返回该分类的所有子类 //$default_category为默认的选中的分类 function Get_Category($category_id = 0,$level = 0, $default_category = 0) { global $DB; $sql = "SELECT * FROM category ORDER BY categoryID DESC"; $result = $DB->query( $sql ); while ($rows = $DB->fetch_array($result)) { $category_array[$rows[categoryParentID]][$rows[categoryID]] = array('id' => $rows[categoryID], 'parent' => $rows[categoryParentID], 'name' => $rows [categoryName]); } if (!isset($category_array[$category_id])) { return ""; } foreach($category_array[$category_id] AS $key => $category) { if ($category['id'] == $default_category) { echo "\n"; } Get_Category($key, $level + 1, $default_category); } unset($category_array[$category_id]); } 函数返回的数组格式如下所示: Array ( [1] => Array ( [id] => 1 [name] => 一级类别[level] => 0 [ParentID] => 0 ) [4] => Array ( [id] => 4 [name] => 二级类别[level] => 1 [ParentID] => 1 ) [9] => Array ( [id] => 9 [name] => 哈哈[level] => 2 [ParentID] => 4 ) [3] => Array ( [id] => 3 [name] => 二级类别[level] => 1 [ParentID] => 1 ) [8] => Array ( [id] => 8 [name] => aqqqqqd [level] => 2 [ParentID] => 3 ) [2] => Array ( [id] => 2 [name] => 二级类别[level] => 1 [ParentID] => 1 ) [7] => Array ( [id] => 7 [name] => 234234 [level] => 2 [ParentID] => 2 ) [6] => Array ( [id] => 6 [name] => 333332 [level] => 2 [ParentID] => 2 ) [5] => Array ( [id] => 5 [name] => 三级类别[level] => 2 [ParentID] => 2 ) [10] => Array ( [id] => 10 [name] => 66333666 [level] => 3 [ParentID] => 5 ) ) */ //指定分类id,然后返回数组 function Category_array($category_id = 0,$level=0) { global $DB; $sql = "SELECT * FROM category ORDER BY categoryID DESC"; $result = $DB->query($sql); while ($rows = $DB->fetch_array($result)) { $category_array[$rows['categoryParentID']][$rows['categoryID']] = $rows; } foreach ($category_array AS $key=>$val) { if ($key == $category_id) { foreach ($val AS $k=> $v) { $options[$k] = array( 'id' => $v['categoryID'], 'name' => $v['categoryName'], 'level' => $level, 'ParentID'=>$v['categoryParentID'] ); $children = Category_array($k, $level+1); if (count($children) > 0) { $options = $options + $children; } } } } unset($category_array[$category_id]); return $options; } class cate { function Get_Category($category_id = 0,$level = 0, $default_category = 0) { echo $category_id; $arr = array( '0' => array( '1' => array('id' => 1, 'parent' => 0, 'name' => '1111'), '2' => array('id' => 2, 'parent' => 0, 'name' => '2222'), '4' => array('id' => 4, 'parent' => 0, 'name' => '4444') ), '1' => array( '3' => array('id' => 3, 'parent' => 1, 'name' => '333333'), '5' => array('id' => 5, 'parent' => 1, 'name' => '555555') ), '3' => array( '6' => array('id' => 6, 'parent' => 3, 'name' => '66666'), '7' => array('id' => 7, 'parent' => 3, 'name' => '77777') ), '4' => array( '8' => array('id' => 8, 'parent' => 4, 'name' => '8888'), '9' => array('id' => 9, 'parent' => 4, 'name' => '9999') ) ); if (!isset($arr[$category_id])) { return ""; } foreach($arr[$category_id] AS $key => $cate) { if ($cate['id'] == $default_category) { $txt = " }else{ $txt = " } if ($level > 0) { $txt1 = ">" . str_repeat( "-", $level ) . " " . $cate['name'] . " }else{ $txt1 = ">" . $cate['name'] . " } $val = $txt.$txt1; echo $val; self::Get_Category($key, $level + 1, $default_category); } } function getFlush($category_id = 0,$level = 0, $default_category = 0) { ob_start(); self::Get_Category($category_id ,$level, $default_category); $out = ob_get_contents(); ob_end_clean(); return $out; } } $id =$_GET['id']; echo " $c = new cate(); //$c->Get_Category(); $ttt= $c->getFlush($id,'0','3'); echo $ttt; echo ""; ?> 1、求$a,$b,$c三个数中的最大值和最小值(5分) echo max($a,$b,$c); echo min($a,$b,$c); 2、echo()、print()、print_r()的区别(5分) print() 只能打印出简单类型变量的值(如int,string) print_r()可以打印出复杂类型变量的值(如数组,对象) echo输出一个或者多个字符串 3、防止SQL注入漏洞可以用哪些函数?(5分) addslashes() mysql_escape_string() 正确回答1个即可 4、用PHP写出显示客户端IP与服务器IP的代码(5分) echo $_SERVER[…REMOTE_ADDR?]; echo $_SERVER[…SERVER_ADDR?]; 5、用PHP打印出前一天的时间,格式例如2006-5-10 22:21:21(10分)strftime(“%Y-%m-%d %T”, strtotime(“-1 day”)); date(“Y-m-d H:i:s”, strtotime(“-1 day”)); 正确回答1个即可 6、写一个函数,能够遍历一个文件夹下的所有文件和子文件夹(20分) function dir_recurse($dir) { $i = 1; if($handle = opendir($dir)) { while(false !== ($file = readdir($handle))) { if($file != "." && $file != ".." ) { if(is_dir($dir."/".$file) == true) { $fullpath = $dir."/".$file; dir_recurse($fullpath); echo "$fullpath\n"; $i++; }else { $fullpath = $dir."/".$file; echo "$fullpath\n"; $i++; } } } closedir($handle); } } 7、创建文件exer1,设置访问权限为rw-r--r--,现要增加所有用户的执行权限和同组用户的写权限,写出操作过程的命令(10分) touch exer1 chmod 644 exer1 增加权限 chmod a+x exer1 chmod g+w exer1 或者 chmod 775 exer1 8、字符串“to upper case”分别用php,shell ,js实现将字符串中的字符全部转换成大写并输出。(5分) Php实现:echo strtoupper(…to upper case?) Shell实现:echo "to upper case" | tr 'a-z' 'A-Z' Js实现: var stmp1 = "to upper case "; alert(stmp1.toLocaleUpperCase());//转换成大写 alert(stmp1.toUpperCase())//转换成大写 9、用root登陆mysql数据库,如果mydb不存在,则在mysql中创建数据库mydb, 给root用户分配所有权限从192.168.1.1 ip来访问mysdb数据库。(root用户密码为空)(10分) CREATE DATABASE IF NOT EXISTS mydb; grant all on mydb.* to root@? 192.168.1.1? identified by '' ; 10 回复最高的排在最前面 “文章id 文章标题点击量回复数量” 请写出sql: SELECT M.`id`, M.`title`, M.`hits`, COUNT(C.`comment_id`) AS CNT FROM `message` AS M LEFT JOIN `comment` AS C ON M.`id` = C.`id` GROUP BY M.`id` ORDER BY CNT DESC; 12、列举一下你知道的开源搜索引擎开发包。(5分) 简单描述网页搜索引擎的工作原理(可以简单画出流程图,并加以流程说明) 更多互联网产品文档请访问 阅微网开放式PM产品社区https://www.sodocs.net/doc/9514144860.html, 阅微网新浪微博https://www.sodocs.net/doc/9514144860.html,/yuewe 阅微网超级500人QQ群 ①阅微综合:【22383617】(已满) ②Axure学习交流群:【118736937】 ③阅微项目交流群:【83584654】 ④移动互联网:【32393417】 ⑤移动互联网:【3973643】 1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量(1)中;而链接到当前页面的的前一页面URL记录在预定义变量(2)中 //本页地址,SCRIPT_NAME也可以:php/test.php echo$_SERVER['PHP_SELF']." //链接到当前页面的前一页面的URL 地址: echo$_SERVER['HTTP_REFERER']." //其它的见参考手册:语言参考》变量》预定义变量 //前执行脚本的绝对路径名:D:Inetpubwwwrootphp est.php echo$_SERVER["SCRIPT_FILENAME"]." //正在浏览当前页面用户的IP 地址:127.0.0.1 echo$_SERVER["REMOTE_ADDR"]." //查询(query)的字符串(URL 中第一个问号? 之后的内容):id=1&bi=2 echo$_SERVER["QUERY_STRING"]." //当前运行脚本所在的文档根目录:d:inetpubwwwroot echo$_SERVER["DOCUMENT_ROOT"]." 2.执行程序段将输出__。 //参考手册》语言参考》运算符》算术运算符》%为取模运算,输出0 echo 8%(-2)." //取模$a % $b 在$a 为负值时的结果也是负值。输出-2 echo ((-8)%3)." //输出2 echo (8%(-3))." ?> 3.在HTTP 1.0中,状态码401 的含义是____;如果返回“找不到文件”的提示,则可用header 函数,其语句为____。 答:401表示未授权;header("HTTP/1.0 404 Not Found");[见参考手册》函数参考》HTTP函数》header] 4.数组函数arsort 的作用是____;语句error_reporting(2047)的作用是____。 答:arsort:对数组进行逆向排序并保持索引关系error_reporting(2047)的作用是:report All errors and warnings 5.写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把script标记及其内容都去掉): $script="以下内容不显示:"; echo preg_replace("//si", "替换内容", $script); ?> 6.以Apache模块的方式安装PHP,在文件http.conf中首先要用语句____动态装载PHP模块,然后再用语句____使得Apache把所有扩展名为php的文件都作为PHP脚本处理。 答:LoadModule php5_module "c:/php/php5apache2.dll";AddType application/x-httpd-php .php 见参考手册》目录》II. 安装与配置》6. Windows 系统下的安装》Microsoft Windows 下的Apache 2.0.x 7.语句include 和require 都能把另外一个文件包含到当前文件中,它们的区别是____;为了避免多次包含同一文件,可以用语句____来代替它们。 答:在如何处理失败时,include()产生一个警告而require()则导致一个致命错误;require_once()/include_once() 8.一个函数的参数不能是对变量的引用,除非在php.ini中把____设为on. 答:allow_call_time_pass_reference boolean:是否启用在函数调用时强制参数被按照引用传递, 见参考手册》附录G 9.SQL 中LEFT JOIN的含义是__,如果tbl_user记录了学生的姓名(name)和学号(ID), tbl_score记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID)和考试成绩(score)以及考试科目(subject),要想打印出各个学生姓名及对应的的各科总成绩,则可以用SQL语句____. 答:自然左外连接 create database phpinterview; use phpinterview create table tbl_user ( ID int not null, name varchar(50) not null, primary key (ID) create table tbl_score ( ID int not null, score dec(6,2) not null, subject varchar(20) not null ); insert into tbl_user (ID, name) values (1, 'beimu'); insert into tbl_user (ID, name) values (2, 'aihui'); insert into tbl_score (ID, score, subject) values (1, 90, '语文'); insert into tbl_score (ID, score, subject) values (1, 80, '数学'); insert into tbl_score (ID, score, subject) values (2, 86, '数学'); insert into tbl_score (ID, score, subject) values (2, 96, '语文'); select A.id,sum(B.score) as sumscore from tbl_user A left join tbl_score B on A.ID=B.ID group by A.id 10. 在PHP中,heredoc是一种特殊的字符串,它的结束标志必须____ 答:结束标识符所在的行不能包含任何其它字符除";" 11.写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。 function my_scandir($dir) { $files=array(); if(is_dir($dir)) { if($handle=opendir($dir)) { while(($file=readdir($handle))!==false) { if($file!="." && $file!="..") { if(is_dir($dir."/".$file)) { $files[$file]=my_scandir($dir."/".$file); } else { $files[]=$dir."/".$file; } } } closedir($handle); return$files; } } } print_r(my_scandir("D:Program FilesInternet ExplorerMUI")); 1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量(1)中;而链接到当前页面的URL记录在预定义变量(2)中。 答:echo $_SERVER['PHP_SELF']; echo $_SERVER["HTTP_REFERER"]; 2.执行程序段将输出(3)。 答:0 3.在HTTP 1.0中,状态码401 的含义是(4);如果返回“找不到文件”的提示,则可用header 函数,其语句为(5)。 答:(4)未授权(5) header("HTTP/1.0 404 Not Found"); 4.数组函数arsort 的作用是(6);语句error_reporting(2047)的作用是(7)。 答:(6)对数组进行逆向排序并保持索引关系(7)All errors and warnings 5.写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把标记及其内容都去掉):(9)。 答:/<[^>].*?>.*?<\/>/si 6.以Apache模块的方式安装PHP,在文件http.conf中首先要用语句(10)动态装载PHP模块,然后再用语句(11)使得Apache把所有扩展名为php的文件都作为PHP脚本处理。 答:(10) LoadModule php5_module "D:/xampp/apache/bin/php5apache2.dll" (11) AddType application/x-httpd-php-source .phps AddType application/x-httpd-php .php .php5 .php4 .php3 .phtml 7.语句include 和require 都能把另外一个文件包含到当前文件中,它们的区别是(12);为了避免多次包含同一文件,可以用语句(13)来代替它们。 答:(12) 发生异常时include产生警告require产生致命错误(13) require_once()/include_once() 8.类的属性可以序列化后保存到session 中,从而以后可以恢复整个类,这要用到的函数是(14)。答:serialize() /unserialize() 9.一个函数的参数不能是对变量的引用,除非在php.ini中把(15)设为on. 答:allow_call_time_pass_reference 10.SQL 中LEFT JOIN的含义是(16)。 如果tbl_user记录了学生的姓名(name)和学号(ID), tbl_score记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID)和考试成绩(score)以及考试科目(subject), 要想打印出各个学生姓名及对应的的各科总成绩,则可以用SQL语句(17)。 答:(16) 自然左外连接 (17) select name , count(score) as sum_score from tbl_user left join tbl_score on tbl_user.ID=tbl_score.ID group by tbl_user.ID 11..在PHP中,heredoc是一种特殊的字符串,它的结束标志必须(18)。 答:结束标识符所在的行不能包含任何其它字符除";" 12.用PHP打印出前一天的时间格式是2006-5-10 22:21:21 答:echo date('Y-m-d H:i:s', strtotime('-1 day'));
";
";
";
";
";
";
";
";
";