一、PHP中几个输入函数 echo, print(), print_r(), printf(), sprintf(), var_dump() 的区别。

  1. echo: 是语句不是函数,没有返回值,可输出多个变量值,不需要圆括号。不能输出数组和对象,只能打印简单类型(如 int,string );
  2. print: 是语句不是函数, 有返回值1,只能输出一个变量, 不一定需要圆括号,不能输出数组和对象,只能打印简单类型(如 int,string );
  3. print_r():是函数, 可打印复合类型 (如 string, int, float, array, object 等)输出 array 时会用结构表示,而且可通过 print_r($str,true) 来使 print_r() 不输出而返回print_r处理后的值;
  4. printf():是函数 把文字格式化后输出,参考C语言
  5. sprintf(): 是函数,跟 printf() 相似,但不打印,而是返回格式化的文字(该函数把格式化的字符串写入一个变量,而不是输出出来)其他的与 printf 一样;
  6. var_dump():是函数,输出变量的内容、类型或字符串的内容、类型、长度。
  1. 通过url传值,把session id附加到url上(缺点:整个站点中不能有纯静态页面,因为纯静态页面session id 将无法继续传递到下一个页面);
  2. 通过隐藏表单,把session id放到表单的隐藏文本框中同表单一块提交过去(缺点:不适用’a’标签这种直接跳转的非表单的情况);
  3. 直接配置php.ini文件, 将php.ini文件里的session.use.trans.sid = 0 设为 1;
  4. 用文件、数据库等形式保存session ID,在跨页过程中手动调用;
    1. setCookie(session_name(),session_id(),time()+60,”/“);
    2. session_set_cookie_params(60);(把session存入cookie中);

注意:php.ini 中的session.gc_probability / session.gc_divisor

三、PHP获取文件内容的方法,对应的函数

  1. file_get_contents() 得到文件的内容(可以以 get 和 post 方法获取),整个文件读入一个字符串中;
  2. 用 fopen() 打开url,以get 方式获取内容(借助 fgets()函数);
  3. 用 fsockopen 函数 打开url (可以以 get 和 post 方式获取)以 get 方式获取完整的数据包括 header 和 body;
  4. 使用 curl 库获取内容,使用 curl 库之前,需查看 php.ini,查看是否已打开了curl扩展

四、isset() 、empty()与is_null的区别

  1. 当变量未定义时,is_null()和“参数本身”是不允许作为参数判断的,会报 Notice 警告错误;
  2. empty,isset首先都会检查变量是否存在,然后对变量值进行检测。而 is_null 和 “参数本身”只是直接检查变量值,是否为null,因此如果变量未定义就会出现错误!
  3. isset():仅当 null 和未定义,返回 false;
  4. empty():””、0、”0”、NULL、FALSE、array(),未定义,均返回 false;
  5. is_null():仅判断是否为 null,未定义 报警告;
  6. 变量本身作为参数,与 empty()一致,但接受未定义变量时,报警告;

五、strlen() 与 mb_strlen 的作用与区别

  在 PHP 中, strlen 与 mb_strlen 是求字符串长度的函数.
  PHP 内置的字符串长度函数 strlen 无法正确处理中文字符串,它得到的只是字符串所占的字节数。对于GB2312的中文编码,strlen 得到的值是汉字个数的2倍,而对于UTF-8编码的中文,就是3倍(在 UTF-8 编码下,一个汉字占3个字节)。
  采用mb_strlen函数可以较好地解决这个问题。mb_strlen 的用法和 strlen 类似,只不过它有第二个可选参数用于指定字符编码。例如得到UTF-8的字符串$str长度,可以用 mb_strlen($str,’UTF-8’)。如果省略第二个参数,则会使用PHP的内部编码。内部编码可以通过 mb_internal_encoding()函数得到。
  需要注意的是,mb_strlen 并不是PHP核心函数,使用前需要确保在 php.ini 中加载了 php_mbstring.dll,即确保“extension=php_mbstring.dll”这一行存在并且没有被注释掉,否则会出现未定义函 数的问题。

六、PHP 如何获取客户端的IP地址

  通过全局数组来获得$_SERVER[‘REMOTE_ADDR’];
  通过环境变量来获得getenv(‘REMOTE_ADDR’);
  当客户机使用代理的时候获取不到真实的IP地址.