【 PHP/MYSQL 技术 】

摘要: 这里收集整理了关于PHP面试的题目,也包括一些阿土自己在阅读和学习中碰到的问题的记录,希望对正在求职的你或希望提高PHP能力的你有所帮助。 1.PHP里面是区分大小写的吗? 这是个很不好回答的问题,PHP对于系统函数、用户自定义函数、类名称等是不区分大小写的如可以用EHCO也可以用echo调用显示函数,但对于变量名称又是区分大小写的,如$Name和$NAME是2个不同的变量。而对于文件名...阅读全文
posted @ 2011-12-15 13:07 涂文瀚 阅读(213) | 评论 (0) 编辑
摘要: 折腾了2天在网上找了不少资料才把PHP的调试环境搭建好,这里总结下搭建的过程及注意事项【环境介绍】操作系统:WIN7WAMP版本:WampServer Version 2.1(Apache2.2.17、PHP5.3.3、MYSQL5.5.8)NETBEANS 版本:NetBeans IDE 7.0 (Build 201104080000)XDEBUG版本:2.1.1(PHP 5.3 VC6 TS (32 bit))备注:XDEBUG官网针对win系统提供了多个版本,每个版本又涉及到VC6、VC9还有带TC的,具体的含义可以通过如何选择PHP版本进一步了解(感谢喵了个咪的对本文提出的建议)【安装阅读全文
posted @ 2011-12-15 13:06 涂文瀚 阅读(284) | 评论 (1) 编辑
摘要: 首先需要指出的是同样免费的Zend OPtimizer并不是加速器,它能通过纠正常见的效率低下的编码习惯来实现对性能的小幅提升。下面的文章转载自杀客,较详细的介绍了3款加速器的安装及性能对比。一、PHP加速器介绍 PHP加速器是一个为了提高PHP执行效率,从而缓存起PHP的操作码,这样PHP后面执行就不用解析转换了,可以直接调用PHP操作码,这样速度上就提高了不少。 Apache中使用mod_php的请求、响应执行流程:1、Apache接收请求。 2、Apache传递请求给mod_php。 3、mod_php定位磁盘文件,并加载到内存中。 4、mod_php编译源代码成为opcode树。 5、阅读全文
posted @ 2011-12-15 13:05 涂文瀚 阅读(99) | 评论 (0) 编辑
摘要: 先上个图,来个看图不说话,大家通过这个图能看个大概PHP从5.2.10开始,区分线程安全和非线程安全2个版本。我们就从这两个的区别说起。所谓线程安全(Thread Safe)就是执行时会进行线程安全检查,以防止有新请求时就启动新线程的CGI执行方式耗尽系统资源。非线程安全(None Thread Safe)就是在执行时不进行线程安全检查。PHP在IIS上运行PHP有ISAPI和FastCGI两种形式(如果是wamp,运行方式是FastCGI)。FastCGI执行方式是以单线程来执行的,所以无需进行线程安全检查,IIS7集成了FastCGI,IIS6也支持,如果是采用FastCGI运行PHP,建阅读全文
posted @ 2011-12-15 13:04 涂文瀚 阅读(70) | 评论 (0) 编辑
摘要: 第一章主要是讲字符串的常用操作,如果你对下面的这些函数都理解了,那么可以跳过此章节。strpos() : 在一个字符串中查找另一个字符串的位置,返回值false或一个数字或是空,需要用===判断 substr() : 从一个字符串中指定起始位置和指定长度的子字符串 substr_replace() : 类似substr(),区别在于是将取得的子字符串用另外一个字符串替换strlen() : 获取字符串的长度。这里是获取字节的长度,对中文来说不适用,中文用mb_strlen() strrev() : 反转原始字符串 array_reverse() : 倒序数组 str_replace() : 非阅读全文
posted @ 2011-12-15 13:03 涂文瀚 阅读(34) | 评论 (0) 编辑
摘要: 第二章主要介绍了PHP如何处理数字,包括了开发中经常使用的小数取舍、数字格式化、大数字处理,同时还用了不少章节介绍科学计算及高精度计算需要用到的函数 is_numeric() : 判断一个变量或值是否是合法的数字类型 abs() : 返回绝对值 round() : 四舍五入 ceil() : 取大 floor() : 取小 range() :...阅读全文
posted @ 2011-12-15 13:02 涂文瀚 阅读(15) | 评论 (0) 编辑
摘要: 本章介绍了日期常用的函数及经常碰到的处理日期/时间的情景,如计算两个时间的差,还简单的介绍了不同时区间的日期显示问题。对于天文日历计算方面的(儒略日)转换函数,个人认为可以忽略。 strftime() : 根据区域设置setlocal()格式化时间/日期 date() :格式一个本地日期/时间 getdate() : 取得日期/时间(可以指定某时间戳) Retur...阅读全文
posted @ 2011-12-15 13:02 涂文瀚 阅读(18) | 评论 (0) 编辑
摘要: 数组是在web开发中经常会用到的部分,所以此章节的内容比较重要 unset() : 销毁一个变量(当然也包括数组) array_pad() : 用值填补指定长度的空缺 array_splice() : 除了可以通过此函数移除数组中的元素,还可以指定另一个数组替换移除的部分 array_merge() : 合并多个数组 array_push() : 在数组末尾添加值 array_map() : 通过一个回调函数处理数组中的多个元素 is_array() : 检测一个变量是否是数组类型array_shift() : 移除数组中的第一个元素 array_pop() : 返回数组中的最后一个元素并将其阅读全文
posted @ 2011-12-15 13:01 涂文瀚 阅读(26) | 评论 (0) 编辑
摘要: 函数(有些资料会将此翻译成过程,所谓的面向过程开发就是以函数为基础的开发)在面向对象开发(简称OO--Object-Oriented Method)时代之前,是PHP中最重要的一个部分,是代码复用唯一的方法。在OO出现之后(虽然早期PHP版本就已经有OO的身影,但真正引入面向对象主要特性是在PHP5版本之后)两种方法常常会并存于一个项目中,这点和很多面向对象语言(JAVA或ASP.NET等)不太一...阅读全文
posted @ 2011-12-15 13:00 涂文瀚 阅读(16) | 评论 (0) 编辑
摘要: 虽说在PHP5之前,php就有对面向对象编程方面的支持,但对对象和类的处理不是那么的理想,直到PHP5通过使用Zend Engine2(ZE2)才使PHP得以包含高级的面向对象特性。本章就是介绍PHP5的面向对象特性,目前,很多的公司在招聘PHPer时都会提出对这部分的要求。需要稍微注意一下的地方是本书中文版在new一个对象的时候(Instantiating Objects)翻译为技巧化一个对象,...阅读全文
posted @ 2011-12-15 12:59 涂文瀚 阅读(192) | 评论 (3) 编辑
摘要: 本章主要介绍了和web相关的一些基础知识如cookie、get请求、post请求、环境变量的读写等内容。setcookie() : 设置cookie值$_COOKIE['名']:获得cookie值浏览器重定向:header('Location: http://www.example.com/confirm.html');get_browser() : 获得浏览器参数 http_build_query() : 将数组转换成查询字符串$vars = array('name' => 'Oscar the Grouch', '阅读全文
posted @ 2011-12-15 12:57 涂文瀚 阅读(24) | 评论 (0) 编辑
摘要: 本章的内容可以说是上一章节的延续,因为表单也是web的基础,但同时也是web基础中的重要组成部分。本章重点介绍了表单中可能出现的各项表单元素的验证、文件上传以及相关的安全问题。 $_SERVER['REQUEST_METHOD']:检测请求是GET还是POST 验证email地址是否有效的函数: function is_valid_email_address($email){ ...阅读全文
posted @ 2011-12-13 20:32 涂文瀚 阅读(140) | 评论 (0) 编辑
摘要: Session应该算是一个在项目开发中应用的比较多的个功能,用以跟踪用户相关信息的WEB应用程序。相对于cookie来说,可以将session理解为在服务器端保存用户数据的一种方式,不同于cookie的另一个主要特点是session是基于浏览器进程的(就是说1个用户打开2个浏览器窗口,可能会产生2个session)。默认情况下Session是保存在服务器的指定的某个目录下的,具体位置可查看PHP....阅读全文
posted @ 2011-12-07 20:22 涂文瀚 阅读(197) | 评论 (4) 编辑
摘要: 什么是XML?XML(eXtensible Markup Language)是国际标准化组织的标准通用标记语言SGML的子集。由以下规范组成:可扩展样式语言(eXtensible Sytle Language , XSL)XML链接语言(XML Linking Language,包括Xpath、Xlink和Xpointer)XML名称空间(XML Namespace)在PHP5之前的版本对XML的处理存在很多的问题,例如XML工具之间只具有简单的关联、每个工具不能一起协同工作等,PHP5中的新XML扩展具有下列特点:能够像一个整体一样协调工作是一个标准化的XML库:libxml2完全遵循W3C阅读全文
posted @ 2011-12-07 20:12 涂文瀚 阅读(107) | 评论 (0) 编辑
摘要: 本章节主要介绍了如何通过PDO来操作mysql。首先介绍下目前在PHP中操作MYSQL的常用方法有mysql、mysqli、PDO三种。mysql是非持继连接函数而mysqli是永远连接函数(其中的i代表Improvement)。也就是说mysql每次链接都会打开一个连接的进程而mysqli多次运行mysqli将使用同一连接进程,从而减少了服务器的开销。而PDO与前两者有很大的不同,PDO提供了一个数据访问的抽象层,为的是让PHPer能使用同样一种语法来操作不同的数据库。本章节就是以PDO来介绍数据库的操作。而在PHP的世界里,MYSQL是用的最多的一个数据库,所以另外一篇文章介绍了mysql阅读全文
posted @ 2011-12-02 10:00 涂文瀚 阅读(170) | 评论 (0) 编辑
摘要: 通过GET获得一个指定url的页面内容有3种方式来获取一个URL的内容:PHP提供的文件函数file_get_contents()cURL扩展PEAR中的HTTP_Request类//方式1$page = file_get_contents('http://www.example.com/robots.txt');//方式2$c = curl_init('http://www.example.com/robots.txt');curl_setopt($c, CURLOPT_RETURNTRANSFER, true);$page = curl_exec($c);c阅读全文
posted @ 2011-11-25 11:49 涂文瀚 阅读(202) | 评论 (0) 编辑
摘要: 目前实现WEB服务比较流行的做法有二种SOAP:(Simple Object Access Protocol,简单对象访问协议)传统的WEB服务解决方案,基于 XML的协议,它被设计成在WEB上交换结构化的和固化的信息。 SOAP可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议(HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。它还支持从消息系统到远程过程调用(RPC)等大量的应用程序。随着SOAP的发展已经越来越复杂,与其名称缩写相违背REST:(Representational State Transfer,表示性状态转移)Roy Fielding 阅读全文
posted @ 2011-11-25 11:48 涂文瀚 阅读(137) | 评论 (0) 编辑
摘要: 实现一个REST的WEB服务 实现一个REST的web服务相对还是比较简单的,用到了HTTP的GET、POST、PUT、DELETE特性。其PHP的处理代码和普通处理POST和GET十分相似 // 转换到大写$request_method = strtoupper($_SERVER['REQUEST_METHOD']);switch ($request_method) {case 'GET':...阅读全文
posted @ 2011-11-22 14:39 涂文瀚 阅读(201) | 评论 (0) 编辑
摘要: 我用的是WAMP2.1在安装PEAR时报错,折腾了几下终于把PEAR给装上去了,先看一个报的错误: 根据网上的资料,说是运行WAMP安装目录下PHP目录的go-pear.bat批处理文件来进行安装。而WAMPSERVER2.1版的PEAR目录位置稍有不同(可以参考我上图高亮部分)。运行后就出现了上述的错误,表示安装失败。 解决办法是运行下面的语句 E:\wamp\bin\php\p...阅读全文
posted @ 2011-11-22 09:01 涂文瀚 阅读(343) | 评论 (0) 编辑
摘要: 发送电子邮件 书中主要是以PEAR中的邮件发送类(Mail)来讲解的(关于如何在WIN系统下安装PEAR可以参考WIN下成功安装PEAR)。PEAR的MAIL类可以通过3种方式来发送电子邮件: 通过PHP内部的mail函数来发送 通过sendmail程序来发送 通过直接连接到一个smtp服务器发送邮件 书中主要以第一种方式来讲解,下面贴一个用SMTP发送邮件的例子 ...阅读全文
posted @ 2011-11-21 15:12 涂文瀚 阅读(141) | 评论 (2) 编辑
摘要: 在写cookbook图像一章的笔记时从官方网站上看到的一个关于imagesetstyle例子,在本机测试了一下,还不错,但对于其中的代码,由于官方并未有详细的解释,导致学习上费了一番功夫。故写一篇博文总结一下将一个图片作为笔刷先看个效果图这个是将一个图片作为笔刷进行绘制的效果,下面是实现的代码:$image = ImageCreate(500,500);$bg = imagecolorallocate($image, 255,255,255);$color = imagecolorallocate($image, 200,0,0);//笔刷效果-笑脸$style = array($bg,$bg阅读全文
posted @ 2011-11-19 15:56 涂文瀚 阅读(160) | 评论 (0) 编辑
摘要: 概述 PHP中绘制图形多使用GD库来实现,GD的功能多寡会因你使用的GD版本以及在配置期间启用了哪些选项而有很大的不同。 常用的GD函数 ImageCreate() : 创建一个基于调色板的图像 ImageColorAllocate() : 为一副图像分配颜色,很古怪的一点是:第一次调用时分配图像的背景色,后面的调用才是用来分配线条、图形等 ImagePNG() : 将GD...阅读全文
posted @ 2011-11-19 15:55 涂文瀚 阅读(48) | 评论 (0) 编辑
摘要: 概述很多WEB应用程序的安全问题多是由于轻信第三方提供的数据造成的,如将未经过滤的数据发送到浏览器就可能造成跨站点脚本攻击(XSS),如果将未经过滤的数据发送到数据库就可能造成数据库注入(SQL injection)过滤数据并不能解决所有的安全问题,因为造成安全问题的起因还包括session的定置攻击,伪造跨站点请求等,另外可以通过加密提高本地数据的安全性,通过SSL提高数据在用户与服务器之间传输的安全性。预防Session定置攻击Session定置攻击在session一章一节做过介绍,就是攻击者如果知道用户的session id可以伪造其信息来获取用户的信息。所有避免将session以url阅读全文
posted @ 2011-11-19 15:54 涂文瀚 阅读(68) | 评论 (0) 编辑
摘要: 概述所谓国际化[通常写为I18N],是指对一个只为某个地区设计的程序进行重构,使其能够在更多的地区使用的过程。而所谓的本地化[通常写为L10N],则是指在一个面向国际化的程序中增加对一个新地区应用支持的过程。作为开发本地应用的开发者来说,这一章节的内容似乎离我们很远,其实不然。就说wordpress,我们很多都是用的国外主机,这时,主机的时区设置和使用者是不一致的,最可能碰到的问题是当你在发博文时,显示的时间是服务器设置的时间而非你本地的时间。这时就需要本地化设置了,通过设置时区来调整时间的显示。设置时区并没那么容易现在大多数系统都有地区系统,虽然地区系统有助于解决许多本地化的问题,但由于标准阅读全文
posted @ 2011-11-19 15:53 涂文瀚 阅读(36) | 评论 (0) 编辑
摘要: 创建自己的异常处理类PHP5已经提供了功能完善的异常处理类,为什么还要自定义异常处理程序呢?因为默认的异常处理并没有真正对不可预知的结果实现妥善地处理。它只是输出与常规错误没有区别的错误信息。标准错误处理程序与异常处理之间的一个主要区别就在于异常可以包含当捕获到自定义异常时自动运行的清理例程。该例程能完美地执行清理工作,并优雅的退出。输出栈轨迹PHP5提供了2个用于调试错误的函数debug_backtrace()和debug_print_backtrace()读取、设置配置变量//读取配置变量$include_path = ini_get('include_path');//设阅读全文
posted @ 2011-11-19 15:52 涂文瀚 阅读(41) | 评论 (0) 编辑
摘要: 概述 虽然PHP本身的速度已经相当快了,也还是有一些工具和技巧用来提升其运行的速度。对在开发过程中进行优化的时间点一直是备受争议的话题,优化过早,可能为不必要的细节浪费时间;优化太晚,可能会发现自己不得不重写大段的代码。 优化不仅是提高其执行速度,几乎只有在少数的情况下需要更快的执行速度,而更常见的情况是节省编程和故障排除的时间。这些问题都是需要在优化的时候考虑的。 本章介绍了一些方法用来...阅读全文
posted @ 2011-11-19 15:50 涂文瀚 阅读(186) | 评论 (0) 编辑
摘要: 概述 PHP提供了两组处理正则的函数,一组是传统的POSIX函数,都是以ereg开头(已过时,不推荐),另一组是Perl兼容的函数PCRE(Regular Expressions (Perl-Compatible)),函数名都是以preg作为前缀。包含的函数如下: preg_filter — 执行一个正则表达式搜索和替换 preg_grep — 返回匹配模式的数组条目 ...阅读全文
posted @ 2011-11-19 11:13 涂文瀚 阅读(72) | 评论 (0) 编辑
摘要: 概述文件是在web应用中经常会碰到的一个部分,本章主要包括如何在PHP中打开、关闭和操纵文件,以及在打开文件后能够对文件做哪些处理等内容。创建或打开一个本地文件可以用fopen()函数打开/创建一个本地文件<?php$fh = fopen('file.txt','rb') or die("can't open file.txt: $php_errormsg");?>fopen函数的第二个参数指定了打开该流的访问类型:模式可读?可写?文件指针截断?创建?说明r是否开始否否只读打开r+是是开始否否读写方式打开w否是开始是是写入阅读全文
posted @ 2011-11-19 11:11 涂文瀚 阅读(76) | 评论 (0) 编辑
摘要: 概述本章可以算是上一章的延续,介绍了除文件实际内容之外的附加信息,包括文件的大小、目录、访问权限等。文件系统中的某些函数只在服务器为特定的系统中时才有效,例如更改符号链接的函数symlink(),设定文件访问权限的函数chmod(),设定目录访问权限的函数umask()等等这些只在Linux系统中有效,在Windows系统中无效。PHP5以后提供的DirectoryIterator类也封装了很多实用的目录方面的操作//------------- 采用DirectoryIterator类迭代目录中的文件 -------------foreach(new directoryIterator(阅读全文
posted @ 2011-11-19 11:10 涂文瀚 阅读(136) | 评论 (1) 编辑

foot