栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > PHP面试题库

PHP面试题汇总

1、写出五种以上你使用过的PHP的扩展的名称(提示:常用的PHP扩展)
mysql、gd2、pdo、curl、mbstring、soap等,在php.ini中可以找到。尽量多了解一些扩展,了解他们的功能(能做什么)。
php通过使用php_ming 库(Ming库)快速生成 Flash 动画

 

  1. 了解MVC模式吗?请写出三种以上目前PHP流行的MVC框架名称(不区分大小写)
    MVC是Model(模型)、View(视觉)、Controll(控制器)的缩写。
    MVC(Model-View-Controller)介绍
    模型(Model):
    应用程序的模型部分关心的是欲显示的数据的细节。模型通常关注的是应用程序的业务逻辑部分,关注的是如何使用数据库来读取和保存数据。
    视图(View): 视图关心的是用户显示的部分,它通常是HTML。
    控制器(Controller):控制器将特定的模型和视图结合起来,保证将正确的数据显示到页面上。
    常用的MVC框架:
    Zend framework
    FleaPHP

    qeephp
    CakePHP
    ThinkPHP
    CI

    YII
    大家有时间可以对框架进入多一些的深入了解。

     

    3、用PHP打印出前一天的时间格式是2008-2-8 18:00:10

    echo ‘昨天:’, date(‘Y-m-d H:i:s’, strtotime(‘-1 day’)), “<br />”;

    echo ‘昨天:’, date(‘Y-m-d H:i:s’, mktime (date(‘H’), date(‘i’), date(‘s’), date(“m”), date(“d”)-1, date(“Y”))), “<br />”;

    date(‘Y-m-d H:i:s’,Time () -24*3600)


    参考strtotime.php mktime.php

     

    4、echo(),print(),print_r()的区别 var_dump()
    echo与print:
    它们都不是真正的函数,是一种语法结构(也有说print是函数,echo不是)。

    echo和print 后面都可不用加(),如: echo ‘ok’; print ‘ok’;
    运行速度echo稍快一些,因为echo并不返回值,print返回一个值int(1)。
    结论:
    1、一般用echo,除非三元运算时。$a=5; ($a==5) ? print ‘5’: print 0;
    2、echo 后一般不要跟()。
    print_r是递归打印,主要用于输出数组对象。

  2. print只能有一个参数,所以不能不能用”,”,而echo可以。
  3. Sprintf 以一定的格式 格式化一个字符串
    参考 echo_print_print_r.php

    5、能够使HTML和PHP分离开使用的模板
    其实PHP本身就是一种模版引擎。参考require.php

    常用的模板引擎:smarty,还有PHPLib,FastTemplate,Savant等。
    模板引擎列表:http://www.sitepoint.com/forums/showthread.php?t=123769

     

    6、如何实现字符串翻转?
    可用内置函数strrev。如果不准用PHP内置函数的就自己写:

    参考strrev2.php

     

    $STR = ‘abc’;

    $STR{0}

    Hello->olleH

     

    7、$a = “hello”;

    $b = &$a;

    unset($b);

    $b = “world”;

    what is $a?
    参考references.php

    此题的目的是要深刻理解引用。

    通常,在将一个变量的值赋给另外一个变量的时候,先产生原变量的一个副本,然后再将它保存在内存的其他地方。如:
    $a = 5;

    $b = $a;
    首先产生$a的一个副本,然后再将它保存到$b中。如果随后改变$a的值,$b的值不会改变:

    $a = 7; //这时$b仍然是5
    可以使用引用操作符&来避免这样的副本。如:
    $a = 5;
    $b = &$a;
    $b = 7; //这时$a和$b都会是7。 这行也可以换成$b = 7;
    引用是非常有趣的。请记住,引用就像一个别名,而不是一个指针。$a和$b都指向了内存的相同地址。可以通过重置它们来改变所指向的地址。如下所示:
    unset($a);
    重置并不会改变$b的值,但是只可以破坏$a和值7保存在内存中的连接。

    可以搜索: 引用 site:php.net 进一步深入了解PHP的引用。
    也可以直接访问这个页面:http://www.php.net/manual/zh/language.references.php

    http://www.php.net/manual/zh/language.references.unset.php


    当 unset 一个引用,只是断开了变量名和变量内容之间的绑定。这并不意味着变量内容被销毁了。例如:

    <?php
    $a = 1;
    $b =& $a;
    unset($a);
    ?>
    不会 unset $b,只是 $a

    8、实现中文字串截取无乱码的方法。
    a.可以用正则
    b.用mb_substr()

    参考mb_substr.php

     

    北京abc substr

     

    9、$a = 1;

    $x = &$a;

    $b = $a++;

    what is $b? $x?

    参考references2.php

    10、$array = array();
    $x = empty($array);

    what is $x? true or false
    参考 empty.php

    什么样的内容为空?

    empty()、isset()、is_null

    11、用PHP写出显示客户端IP与服务器IP的代码

    得到服务器端的IP:
    //gethostbyname() 参考gethostbyname.php 有时候得不到。
    $_SERVER[‘SERVER_ADDR’];
    得到客户端的IP:
    $_SERVER[‘REMOTE_ADDR’];
    参考ip.php

     

    12、某内容管理系统:用户提交内容后,系统生成静态HTML页面;写出实现的基本思路,最好写出相关代码。
    用户提交内容后,将内容加在最终页面模板上,然后另存为HTML页面(创建HTML页面,将内容和页面模板写入)。
    代码:
    $tpl->assign(‘vars’, $vars);
    $static_html = = $tpl->fetch(‘tpl/index.html’); //Smarty的fetch方法
    $fp = fopen(‘html/index.html’, ‘w’);

    fwrite($fp, $static_html);

     

    另一种 ob_start

    createHtml.php

     

    13、写出以下程序的输出结果

     

    $b=201;

    $c=40;

    $a=$b>$c?4:5;

    echo $a;

    参考3yuan.php

    14、写出以下程序的输出结果

    $str=”cd”;

    $$str=”hotdog”; // $cd = ‘hotdog’

    $$str.=”ok”;

    echo $cd;

     

    参考$$.php

     

    15、在PHP中error_reporting这个函数有什么作用?
    设定php脚本的错误报告级别
    error_reporting(6143)的作用是设定php脚本的错误报告级别为”所有错误”。
    ini_set(‘display_errors’, 1); //作用是在显示PHP脚本错误,相当于修改php.ini中的

     

    error_reporting

     

    定义和用法

    error_reporting() 设置 PHP 的报错级别并返回当前级别。

    语法

    error_reporting(report_level)

    如果参数 level 未指定,当前报错级别将被返回。下面几项是 level 可能的值:

    常量

    描述

    1

    E_ERROR

    Fatal run-time errors. Errors that can not be recovered from. Execution of the script is halted

    2

    E_WARNING

    Non-fatal run-time errors. Execution of the script is not halted

    4

    E_PARSE

    Compile-time parse errors. Parse errors should only be generated by the parser

    8

    E_NOTICE

    Run-time notices. The script found something that might be an error, but could also happen when running a script normally

    16

    E_CORE_ERROR

    Fatal errors at PHP startup. This is like an E_ERROR in the PHP core

    32

    E_CORE_WARNING

    Non-fatal errors at PHP startup. This is like an E_WARNING in the PHP core

    64

    E_COMPILE_ERROR

    Fatal compile-time errors. This is like an E_ERROR generated by the Zend scripting Engine

    128

    E_COMPILE_WARNING

    Non-fatal compile-time errors. This is like an E_WARNING generated by the Zend scripting Engine

    256

    E_USER_ERROR

    Fatal user-generated error. This is like an E_ERROR set by the programmer using the PHP function trigger_error()

    512

    E_USER_WARNING

    Non-fatal user-generated warning. This is like an E_WARNING set by the programmer using the PHP function trigger_error()

    1024

    E_USER_NOTICE

    User-generated notice. This is like an E_NOTICE set by the programmer using the PHP function trigger_error()

    2048

    E_STRICT

    Run-time notices. PHP suggest changes to your code to help interoperability and compatibility of the code

    4096

    E_RECOVERABLE_ERROR

    Catchable fatal error. This is like an E_ERROR but can be caught by a user defined handle (see also set_error_handler())

    8191

    E_ALL

    All errors and warnings, except level E_STRICT (E_STRICT will be part of E_ALL as of PHP 6.0)

    例子

    任意数目的以上选项都可以用”或”来连接(用 OR 或 |),这样可以报告所有需要的各级别错误。例如,下面的代码关闭了用户自定义的错误和警告,执行了某些操作,然后恢复到原始的报错级别:

    <?php

    //禁用错误报告

    error_reporting(0);

    //报告运行时错误

    error_reporting(E_ERROR | E_WARNING | E_PARSE);

    //报告所有错误

    error_reporting(E_ALL);

    ?>

     

     

    16、简述如何得到当前执行脚本路径,包括所得到参数。
    访问http://temp.com/phpinfo.php?id=1
    echo $_SERVER[‘script_URL’]; //得到/phpinfo.php

    echo $_SERVER[“script_URI”]; //得到http://temp.com/phpinfo.php

    echo $_SERVER[“script_FILENAME”]; //得到F:/www/Temp/phpinfo.php

    echo $_SERVER[“REQUEST_URI”]; //得到/phpinfo.php?id=1

    echo $_SERVER[“script_NAME”]; //得到/phpinfo.php

    参考server.php http://lesson.com/test/server.php?id=1

    17、有一个网页地址 http://bbs.91lamp.com/index.php ,如何得到它的html内容
    file_get_contents()

     

  4. 数组函数 arsort 的作用是__。
    对数组进行逆向排序并保持索引关系


    参考arsort.php

     

    19、执行程序段<?php echo 8%(-2) ?>将输出__0。
    参考%.php

    20、语句 include 和 require 都能把另外一个文件包含到当前文件中,它们的区别是__;为了避免多次包含同一文件,可以用语句__来代替它们。
    发生异常时include产生警告,程序继续执行;require产生致命错误,程序停止往下执行。一般推荐使用require(更能调试错误)。
    require_once()/include_once()

     

    require重复调用会多次加载你引用的文件;require_once只加载一次,而不管你实际上调用了多少次,主要用于复杂的文件包含关系。
    例如b包含a,c包含a,但同时c又包含了b,那么如果用require的话可能会导致两次加载a,这时应使用require_once。

     

    实际开发过程中:如果确定某个文件只会被包含一次,那么用 require,否则用require_once。因为require不需要检测文件是否被包含过,比require_once 的执行效率要高。

     

    21、一个函数的参数不能是对变量的引用,除非在php.ini中把__设为on。
    allow_call_time_pass_reference
    quote.php

     

    22、在PHP中,heredoc是一种特殊的字符串,它的结束标志必须__。
    结束标识符所在的行不能包含任何其它字符除”;”

    参考heredoc.php

     

    23、有一数组 $a=array(3,2,4,9,8);请将其重新排序,按从小到大的顺序列出。
    可用冒泡法进行排序:
    冒泡排序的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后,此时第一趟结束,在最后的数必是所有数中的最大数。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到最大数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最大数。如此下去,直至最终完成排序。

    参考array1.php array2.php

     

    24、写出session的运行机制。

     

    session创建时,是否会在服务端记录一个cookie?cookie里面的内容是什么?

    session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。

    当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否已包含了一个session标识-称为sessionid,如果已包含一个sessionid则说明以前已经为此客户端创建过session,服务器就按照sessionid把这个session检索出来使用(如果检索不到,可能会新建一个),如果客户端请求不包含sessionid,则为此客户端创建一个session并且生成一个与此session相关联的sessionid,sessionid的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个sessionid将被在本次响应中返回给客户端保存。

    保存这个sessionid的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发给服务器。一般这个cookie的名字都是类似于SEEESIONID。

     

    由于cookie可以被人为的禁止,必须有其他机制以便在cookie被禁止时仍然能够把sessionid传递回服务器。经常被使用的一种技术叫做URL重写,就是把sessionid直接附加在URL路径的后面,附加方式也有两种,一种是作为URL路径的附加信息,表现形式为http://…../xxx;SEEESIonID=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764

    另一种是作为查询字符串附加在URL后面,表现形式为http://…../xxx?SEEESIonID=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764

     

    为了在整个交互过程中始终保持状态,就必须在每个客户端可能请求的路径后面都包含这个SEEESIONID。

     

    参考:
    session运行机制:理解session机制:
    http://bbs.91lamp.com/detail-526-1.html
    抛开cookie使用session:
    http://www.91lamp.com/html/document/php/200808/16-1800.html
    cookie与session:
    http://www.91lamp.com/html/document/php/200808/16-1797.html

     

    25、cookie的原理及使用?

    cookie是网站保存在浏览器客户端的信息,也就是说保存在访客的机器里的变量,一般随着HTTP头发送到服务器端。在cookie生效之后及失效之前,客户每次发出页面请求的时候(包括PHP页面和静态html页面),都会把cookie一块发送到服务器,只要我们针对它进行相应的处理,就可以实现变量”追随”。

     

    cookie可以跨越子域名。
    比如我们在xiaofeicn.com下面注册个个cookie,那么可以在bbs.xiaofeicn.com上读取到该cookie。
    session不可以跨越子域名:
    比如我们在xiaofeicn.com下面注册个个session,那么不可以在bbs.xiaofeicn.com,www.xiaofeicn.com上读取到该session。

     

    a. 设置一个cookie变量

      设置一个cookie变量,PHP使用的函数是: int setcookie(string name, string value, int expire,

    string path, string domain, int secure);

      其中name是cookie变量名称标识,你在PHP中将可以象使用普通变量名一样来用它引用cookie变量。value是cookie变量的初始值,expire 表示该cookie变量的有效时间;path 为该cookie变量的相关路径;domain 表示cookie变量的网站;secure 则需在 https 的安全传输时才有效。   例如我们要设置一个变量username,它的值是字符串”bluewind”,我们可以这么写代码: setcookie (“username”,”bluewind”); //这两个参数是setcookie必要的。

      我们还想给这个变量设置有效时间来限制操作超时等,比如说10分钟: setcookie (“username”,”bluewind”, 600000); //有效时间的单位是毫秒。

      注意:setcookie和header函数一样,需要放在任何能向客户端输出的语句之前。

     

    b. 销毁一个变量

      销毁cookie变量只要将它的value设为空(””)就可以了,如想销毁上面那个变量只要再写一次: setcookie (“username” ,””);

      就可以了。这常用作安全退出之用。

     

    c. cookie的有效范围和生存期

      cookie的有效范围(也就是说在这个范围的页面都能得到这个cookie变量)默认的是该目录及其子目录,当然你可以用setcookie的path和domain参数进行修改。如果你不对cookie的expire进行设置(参见1. 设置一个cookie变量中的例子),那么当你离开网站的页面,cookie也同时得到自动销毁。   http://www.netscape.com/newsref/std/cookie_spec.html是 cookie 原创者 Netscape 所提供的完整介绍信息。

     

    26、PHP的意思(英文全称、含义)
    php是Hypertext Preprocessor的缩写,php是一种内嵌HTML的脚本语言。PHP的独特语法混合了c,java和perl及PHP式的新语法。这门语言的的目标是让网页开发人员快速的写出动态的网页。

    Personal HomePage tools

    Hypertext Preprocessor Hypertext Preprocessor …

    27、foo()和@foo()之间有什么区别?
    foo() 会执行这个函式,任何解译错误、语法错误、执行错误都会在页面上显示出来。

    @foo() 在执行这个函数时,会隐藏所有上述的错误讯息。

    很多应用程式都使用 @mysql_connect() 和 @mysql_query 来隐藏 mysql 的错误讯息,我认为这是很严重的失误,因为错误不该被隐藏,你必须妥善处理它们,可能的话解决它们。

     

    28、如何声明一个名为”myclass”的没有方法和属性的类?

    class myclass

    {

    }

     

    29、如何实例化一个名为”myclass”的对象?

    $myclass = new myclass;

     

    30、你如何访问和设置一个类的属性?

    $myclass->username = ‘andy’;

    31、GD库是做什么用的?
    GD 函式库用来做什么?

    这个可能是我最喜欢的函式库,自从 PHP 4.3.0 版本后 GD 便内建在 PHP 系统中。这个函式库让你处理和显示各式格式的图档,它的另一个常见用途是制作所图档。GD 以外的另一个选择是 ImageMagick,但这个函式库并不内建于 PHP 之中,必须由系统管理员安装在伺服器上。
    MagickWand

     

    32、指出一些在PHP输出一段HTML代码的办法。
    嗯,你可以使用 PHP 中任何一种输出语句,包括 echo、print、printf,大部分人都使用如下例的 echo:

     

    echo “My string $variable”;

    你也可以使用这种方法:

    Heredoc

    echo <<<END
    This text is written to the screen as output and this $variable is parsed too. If you wanted you can have <span> HTML tags in here as well.</span> The END; remarks must be on a line of its own, and can’t contain any extra white space.
    END;

     

    33、下面哪个函数可以打开一个文件,并对文件进行读和写操作? c

    (a) fget() (b) file_open() (c) fopen() (d) open_file()

     

    34、下面哪个选项没有将 john 添加到users 数组中? bd

      (a) $users[] = ‘john’;

      (b) array_add($users, ‘john’);

      (c) array_push($users, ‘john’, ‘andy’);

    (d) $users ||= ‘john’;

     

    35、

    如何使用下面的类,并解释下面什么意思?

    class Mymd5

    {

        function get_md5($str)

        {

            $str=md5(md5($str).”xingmo”);

            return $str;

        }

    }

    参考 mymd5.php

     

    36、用哪一个函数检测一个变量是否定义过?是否为空的函数是?是否为NULL?

    isset()、 empey、is_null()

    要深刻理解这几个的含义。









     

    37、$arr = array(‘james’, ‘tom’, ‘symfony’); 请打印出第一个元素的值 ac

    a.echo $arr[0];

    b.echo $arr{1};

    c. $arr2 = array_shift($arr); echo $arr2;
    array_pop

     

    38、请将数组的值用’,’号分隔并合并成字符串输出。如何将一个以’,’隔开的字符串分割成数组?
    参考 implode.php 把数组变成字符串
    要掌握implode和explode的用法。

     

    39、$a = ‘abcdef’; 请打印出$a的第一个字母。
    echo $a{0};
    echo $a[0]; // 不建议用这种方式

    substr($a, 0, 1);

    最好是用{}。

     

    40、PHP可以和sql server/oracle等数据库连接吗?

    可以。可以用PDO连接。

     

     

    41、请写出php5的构造函数和析构函数

    function __construct()

    {
    }
    function __destruct()

    {

    }

     

    42、写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名

    例如: http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php
    参考url1.php

     

    43、求两个日期的差数,例如2007-2-5 ~ 2007-3-6 的日期差数(天数)。
    思路1:先用strtotime转换成unix时间戳,然后相减,除以86400.
    思路2:先用mktime转换成unix时间戳,然后相减,除以86400.

    参考 time1.php

     

    44、请写一个函数,实现以下功能:
    字符串”open_door” 转换成 “OpenDoor”、”make_by_id” 转换成 “MakeById”。

    思路:
    1)将’_’替换成’ ‘;
    2)使用ucwords()将各单词首字母大写;
    3)去掉空格;str_replace()

    rename_for_val.php

     

     

    46、如果模板是用smarty模板。怎样用section语句来显示一个名为$data的数组。比如:

    $data = array(

           0 => array( ‘id’=>8, ‘name’=>’name1’),

           1 => array( ‘id’=>10, ‘name’=>’name2’),

           2 => array( [id]=15 [name]=’name3′)

    )

    写出在模板页的代码? 若用foreach语句又要怎样显示呢?
    section和foreach循环二维数组的基本功。section和foreach循环一维数组?section和foreach循环三维数组?

    Section 句式

    {section name=customer loop=$data }
    id: {$data[customer]}<br />
    {/section}

     

    47、不用新变量直接交换现有两个变理的值。
    考算法的基本功。
    $a = ‘welcome’;

    $b = ‘beijing’;

    $a = ‘|’.$a.’|’.’|’.$b.’|’; //|welcome||beijing|
    $b = str_replace( ‘|’.$b.’|’, ”, $a);

    $b = trim($b, ‘|’);

     

    $a = str_replace( ‘|’.$b.’|’, ”, $a);

    $a = trim($a, ‘|’);

    echo $a;

    echo $b;

    $a=5;$b=3;怎么交换两个数字?

    $a=$a+$b; // 8

    $b=$a-$b; //5

    $a=$a-$b; //3

     

  5. PHP数字金额转中文大写格式,同时说明思路(考数组掌握)。
    15001.25 壹万伍仟零壹元贰角伍分

    $daixi = array (‘零’,’壹’,”);

    $str{0}

     

  6. 写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。
    Readdir opendir scandir

    参考 dir.php

     

    50、表单中 get与post提交方法的区别?

    a、Get 方法通过 URL 请求来传递用户的数据,将表单内各字段名称与其内容,以成对的字符串连接,置于 action 属性所指程序的 url 后,如http://www.domain.com/test.asp?name=51js&password=51js,数据都会直接显示在 url 上,就像用户点击一个链接一样;Post 方法通过 HTTP post 机制,将表单内各字段名称与其内容放置在 HTML 表头(header)内一起传送给服务器端交由 action 属性能所指的程序处理,该程序会通过标准输入(stdin)方式,将表单的数据读出并加以处理

     

    b、 Get 方式需要使用 $_GET 来取得变量的值;而 Post 方式通过 $_POST 来访问提交的内容

     

    c、Get 方式传输的数据量非常小,一般限制在 2 KB 左右,但是执行效率却比 Post 方法好;而 Post 方式传递的数据量相对较大,它是等待服务器来读取数据,不过也有字节限制,这是为了避免对服务器用大量数据进行恶意攻击。可在php.in中 对 post_max_size 进行设置。

     

    建议:除非你肯定你提交的数据可以一次性提交,否则请尽量用 Post 方法

     

    d、Get 方式提交数据,会带来安全问题,比如一个登陆页面,通过 Get 方式提交数据时,用户名和密码将出现在 URL 上,如果页面可以被缓存或者其他人可以访问客户这台机器,就可以从历史记录获得该用户的帐号和密码,所以表单提交建议使用 Post 方法;Post 方法提交的表单页面常见的问题是,该页面如果刷新的时候,会弹出一个对话框。

     

    建议:出于安全性考虑,建议最好使用 Post 提交数据***********************************在B/S应用程序中,前台与后台的数据交互,都是通过HTML中Form表单完成的。Form提供了两种数据传输的方式——get和post。虽然它们都是数据的提交方式,但是在实际传输时确有很大的不同,并且可能会对数据产生严重的影响。虽然为了方便的得到变量值,Web容器已经屏蔽了二者的一些差异,但是了解二者的差异在以后的编程也会很有帮助的。

    Form中的get和post方法,在数据传输过程中分别对应了HTTP协议中的GET和POST方法。二者主要区别如下:

    a、Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据。

    b、Get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用”?”连接,而各个变量之间使用”&”连接;Post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL。

    c、Get是不安全的,因为在传输过程,数据被放在请求的URL中,而如今现有的很多服务器、代理服务器或者用户代理都会将请求URL记录到日志文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。另外,用户也可以在浏览器上直接看到提交的数据,一些系统内部消息将会一同显示在用户面前。Post的所有操作对用户来说都是不可见的。

    d、Get传输的数据量小,这主要是因为受URL长度限制;而Post可以传输大量的数据,所以在上传文件只能使用Post(当然还有一个原因,将在后面的提到)。

    e、Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。

    f、Get是Form的默认方法。

    *.Post传输数据时,不需要在URL中显示出来,而Get方法要在URL中显示。

    *.Post传输的数据量大,可以达到2M,而Get方法由于受到URL长度的限制,只能传递大约1024字节.

    *.Post顾名思义,就是为了将数据传送到服务器段,Get就是为了从服务器段取得数据.而Get之所以也能传送数据,只是用来设计告诉服务器,你到底需要什么样的数据.Post的信息作为http请求的内容,而Get是在Http头部传输的。

     

    51、session与cookie的区别?

    session是服务器端缓存,cookie是客户端缓存。

     

    cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。

     

    52、PHP支持的数据类型有八种,以下被支持的有:

    string

    int

    float

     

    Bool

     

    array

     

    NULL

    resource

    object

     

    A、array

    B、floating-point numbers(double)

    C、integer

    D、date

    E、string

    [ A B C E ]

    PHP的变量属于松散数据类型,在计算时动态(dynamic)决定。如果要强制设置变量的数据类型的话,可以利用 settype()

    函数。或利用 c 语言的强制转型方式(type casting)。

     

    53、假定要使用Apache+Php的配置,并将php3编译成Apache的一个模块。那麽以下httpd.conf文件的语句是必须的:【C】

    A、AddModule mod_php3.c

    B、LoadModule php3_module libexec/libphp3.so

    C、AddType application/x-httpd-php3 .php3

    D、setup

    E、make install

     

    54、以下程序:

    <HTML>

    <HEAD>

    <TITLE></TITLE>

    <HEAD>

    <BODY>

    <?php

    $num1 = 15;

    $num2 = $num1;

    echo “<p>$num2</p>”;

    $num2 = &$num1;

    $num2 = 20;

    echo “<p>$num1</p>”;

    ?>

    </BODY>

    </HTML>

     

    程序输出为:[ ]

    A、15

    B、35

    C、20

    D、5

     

    AC

     

    55、以下程序

    <?php

    $str1 = “01”;

    $str1++;

    $str1 += 1; //$str1 = $str1 + 1;

    echo “<p>$str1 => $str1</p>”;

    ?>

    程序输出为:[ ]

    A、$str1 => 01

    B、$str1 => 2

    C、$str1 => 03

    D、$str1 => 3

    E、$str1 => 1

    D

    参考math1.php

     

    56、全局变量与局部变量

     

    $a=1;

    sum()

    {

     

    echo $a;

    }

    sum();

     

    程序输出为:[ ]

    A、1

    B、10

    C、100

    D、1000

    E、空值

    E

     

    57、PHP的控制语句

    <?php

    $a = 3;

    $b = $a++;

    if ($a > $b)

    {

    echo “a 比 b 大”;

    }

    elseif ($a == $b)

    {

    echo “a 等于 b”;

    }

    else

    {

    echo “a 比 b 小”;

    }

    ?>

     

    输出结果为:[ ]

    A、a 比 b 大

    B、a 等于 b

    C、a 比 b 小

    D、”a 比 b 小”

    E、无输出

    A

     

    58、PHP对字符串的处理程序

    $name=”Jollen”;

    echo ‘Name:$name’;

    echo “Name:$name”;

    输出结果为:[ ]

    A、Name:Jollen

    Name:Jollen

    B、Name:Jollen

    Name:$name

    C、Name:$name

    Name:Jollen

    D、Name:$name

    Name:$name

    E、Name:”Jollen”

    Name:Jollen

    C

    此题考单引号与双引号的基本功。

     

    59、下面建立与MySQL Server的连接语法正确的是:[ ]

    A、$link=connect(“host_name”,”user_name”,”password”);

    B、$link=mysql_connect(“host_name”,”user_name”,”password”);

    C、$link=mysqlconnect(“host_name”,”user_name”,”password”);

    D、$link=mysql_pconnect(“host_name”,”user_name”,”password”);

    E、$link=pconnect(“host_name”,”user_name”,”password”);

    BD

     

    60、rawurlencode()的作用是?
    按照 RFC 1738 对 URL 进行编码

    返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数。这是在 RFC 1738 中描述的编码,是为了保护原义字符以免其被解释为特殊的 URL 定界符,同时保护 URL 格式以免其被传输媒体(像一些邮件系统)使用字符转换时弄乱。

    与urlencode()的区别:
    urlencode:
    返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。此编码与 WWW 表单 POST 数据的编码方式是一样的,同时与 application/x-www-form-urlencoded 的媒体类型编码方式一样。由于历史原因,此编码在将空格编码为加号(+)方面与 RFC1738 编码(参见 rawurlencode())不同。

     

    61、请说明在php.ini中safe_mode开启之后对于PHP系统函数的影响?

    safe_mode是唯一PHP_INI_SYSTEM属性,必须通过php.ini或httpd.conf来设置。要启用safe_mode,只需修改php.ini: safe_mode = On 或者修改httpd.conf,定义目录:

     

    Options FollowSymlinks php_admin_value safe_mode 1

     

    重启apache后safe_mode就生效了。启动safe_mode,会对许多PHP函数进行限制,特别是和系统相关的文件打开、命令执行等函数。

     

    默认情况下,所有操作文件的函数将只能操作与脚本UID相同的文件。

    注意:如果在linux中启用了safe_mode,那么如果要在一个目录中创建一个目录,比如要在/upload中创建一个20081202,那么/upload目录所有者必须是apache的所有者。

     

    62、PHP5中魔术方法函数有哪几个,请举例说明各自的用法

    __sleep
    __wakeup
    __toString
    __set_state
    __construct,
    __destruct
    __call,
    __get,
    __set,
    __isset,
    __unset
    __clone
    __autoload

     

  7. What does <? echo count (“123”) ?> print out? D
    A) 3
    B) False
    C) Null
    D) 1
    E) 0

    65、What is the value of $a?
    <?php
    $a = in_array(’01’, array(‘1′)) == var_dump(’01’ == 1);
    ?>
    A) True
    B) False

    B

     

    66、What is the value of $result in the following PHP code?
    <?php
    function timesTwo($int) {
    $int = $int * 2;
    }
    $int = 2;
    $result = timesTwo($int);
    ?>;
    Answer: NULL

     

    67、The code below ___________ because ____________.
    <?php
    class Foo {
    ?>
    <?php
    function bar() {
    print “bar”;
    }
    }
    ?>
    A) will work, class definitions can be split up into multiple PHP blocks.
    B) will not work, class definitions must be in a single PHP block.
    C) will not work, class definitions must be in a single file but can be in multiple PHP blocks.
    D) will work, class definitions can be split up into multiple files and multiple PHP blocks.

     

    68、When turned on, ____________ will _________ your script with different variables from HTML forms and cookies. //D
    A) show_errors, enable
    B) show_errors, show
    C) register_globals, enhance
    D) register_globals, inject

    69、What will be the output of the following PHP code:
    <?php
    echo count(strlen(“http://php.net“));
    ?>
    Answer: 1

     

     

    71、What is the difference between “print()” and “echo()”?

    Answer: print is a function,echo is a language construct

     

    72、写出以下程序的运行结果

    $aa = null;

    $bb = false;

    If($aa= = = $bb)

    {

        Echo ‘相同’;

    }

    Else

    {

    echo’不相同’;

    }

     

  8. zend optimizer是什么

    用优化代码的方法来提高php应用程序的执行速度,且可以解密Zend Guard加密过后代码,使之能够正常运行

     

    74、有三个php文件位于同一目录下,内容为

    a.php:——-

    <?php function fa() { echo “in Function An”; }?>

     

    b.php:——-

    <?php include_once ‘a.php’; ?>

    <?php function fb() { fa(); echo “in Function Bn”; } ?>

     

    c.php:——-

    <?php include ‘a.php’; ?>

    <?php include ‘b.php’; ?>

    <?php fa(); fb(); ?>

     

    使用浏览器访问 c.php,请问是否存在问题。

    如果存在问题,请指出修正方法并写出浏览器查看效果

    如果不存在问题,请写出浏览器查看效果

     

  9. 将字符09转换成十进制数字。

    Intval.php

     

    77、What would the following code print to the browser? Why?

    复制内容到剪贴板代码:

     

    $num = 10;

    function multiply(){

    $num = $num * 10;

    }

    multiply();

    echo $num;

     

     

    79、以下哪一个函式可以把浏览器转向到另一个页面? (B)

    A) redir()

    这不是一个 PHP 函式,会引致执行错误。

    B) header()

    这个是正确答案,header() 用来插入卷头资料,可以用来使浏览器转向到另一个页面,例如:

    header(“Location: http://www.search-this.com/”);

    C) location()

    这不是一个 PHP 函式,会引致执行错误。

    D) redirect()

    这不是一个 PHP 函式,会引致执行错误。

     

    80、isset()和empty()的区别
        两者都是测试变量用的。但是isset()是测试变量是否被赋值,而empty()是测试一个已经被赋值的变量是否为空。如果一个变量没被赋值就引用在php里是被允许的,但会有notice提示。如果一个变量被赋空值,$foo=””或者$foo=0或者$foo=false,那么empty($foo)返回真,isset($foo)也返回真,就是说赋空值不会注销一个变量。要注销一个变量,可以用 unset($foo)或者$foo=NULL。

     

     

     

     

     

     


     

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/266415.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号