1.strlen()与mb_strlen的作用分别是什么?
两者都是求字符串的长度。不同的是针对UTF8的编码方式中有中文的时候:
strlen计算时将一个中文字符算作3个长度,mb_strlen计算为1个长度。
另mb_strlen()有第二个可选参数,如果设置为‘gb2312’则计算为2个长度。
2.写出下列几个预定义全局变量的作用
$_SERVER['DOCUMENT_ROOT'] $_SERVER['REMOTE_ADDR']
当前运行脚本所在的文档根目录。 正在浏览当前页面用户的IP地址
$_SERVER['HTTP_HOST '] $_SERVER['HTTP_HOST ']
当前请求的Host:头部的内容 当前请求的Host:头部的内容
3.include和require都能把另外一个文件包含到当前文件中,他们有什么区别?Include和include_once又有什么区别?
(1)include()在执行文件时每次都要进行读取和评估;require()文件只处理一次(实际上文件内容替换了require()语句)
(2)require()通常放在PHP脚本程序的最前面include()的使用和require()一样,一般放在流程控制的处理区段中,PHP脚本文件读到include()语句时,才将它包含的文件读进来,这种方式,可以把程序执行时的流程简单化
(3)require()和include()语句是语言结构,不是真正的函数,可以像PHP的其他语言结构一样
(4)require()包含文件失败,停止执行,给出错误(致命的);
(5)include()常用于动态包含.通常是自动加载的文件,即使加载出错,整个程序还是继续执行一个页面声明,另一个页面调用包函文件失败,继续向下执行,返回一条警告
(6)include_once()和require_once()语句也是在脚本执行期间包括并运行指定文件,与include()require()唯一的区别是如果文件中的代码已经被包括了,则不会再次包括.
4.请解释下列10个shell命令的用途
top、ps、mv、find、df、cat、chmod、chgrp、grep、wc
top:该命令提供了实时对系统处理器状态的监控,它能够实时显示系统中各个进程的资源占用情况。该命令可以按照对CPU、内存使用和执行时间对系统任务进程进行排序显示,同时还可以通过交互式命令进行设定显示。
ps:显示系统进程在瞬间的运行动态。
mv:文件/目录改名或变更存储位置。
find:在指定的路径下查找指定文件。
df:检查磁盘空间占用情况。
cat:将文件的内容打印到标准输出。
chmod:改变文件的权限。
chgrp:改变文件所属组。
grep:过滤文本,根据指定的字符串,对文件的每一行进行搜索,如找到,则输出该行内容。
wc:统计指定文件中的字节数、字数、行数,并将统计结果显示输出。
5. 写出下列服务的用途和默认端口
FTP: 文件传输协议 端口是 21
SSH:为建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。 端口是22
Telnet : TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力 端口是23
HTTP :超文本传输协议 端口是80
HTTPS: 简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL 端口是443
6. 设计模式考察:请用单态设计模式方法设计类满足如下需求
请用PHP5代码编写类实现在每次对数据库连接的访问中都只能获得唯一的一个数据库连接,具体连接数据库的详细代码忽略,请写出主要逻辑代码:
class db {
private static $obj= null;
private function __construct() {
$conn = mysql_connect('localhost','root','password');
}
static function two() {
if (is_null(self::$num)) {
self::$obj= new self();
}
return self::$obj;
}
private function__clone(){}
}
7、写出下面2个PHP操作Mysql函数的作用和区别
mysql_affected_rows -- 取得前一次 MySQL 操作所影响的记录行数
mysql_num_rows函数返回结果集中行的数目。
8.sql语句应该考虑哪些安全性?
防止 Sql 注入,对特殊字符进行转义、过滤或者使用预编译的 sql 语句绑定变量。
最小权限原则,特别是不要用 root 账户,为不同的类型的动作或者组建使用不同的账户。
当 sql 运行出错时,不要把数据库返回的错误信息全部显示给用户,以防止泄露服务器和数据库相关信息。
9. 简单描述mysql中,索引,主键,唯一索引,联合索引的区别,对数据库的性能有什么影响(从读写两方面)
索引是一种特殊的文件(InnoDB 数据表上的索引是表空间的一个组成部分),它们包含对数据表里所有记录的引用指针。
普通索引(由关键字 KEY 或 INDEX 定义的索引)的唯一任务是加快对数据的访问速度。
普通索引允许被索引的数据列包含重复的值。如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该用关键字 UNIQUE 把它定义为一个唯一索引。
也就是说,唯一索引可以保证数据记录的唯一性。
主键,是一种特殊的唯一索引,在一张表中只能定义一个主键索引,主键用于唯一标识一条记录,使用关键字 PRIMARY KEY 来创建。
索引可以覆盖多个数据列,如像 INDEX(columnA, columnB)索引,这就是联合索引。
索引可以极大的提高数据的查询速度,但是会降低插入、删除、更新表的速度,因为在执行这些写操作时,还要操作索引文件。