php开发面试题---2、php常用面试题二(表单提交方式中的get和post有什么区别)

一、总结

一句话总结:

数据位置:get参数在url里面,post在主体里面
数据大小:get几kb,post比较大(所以适合表单提交)
获取方式:get传递的数据通过$_GET[]获取,post传递的数据通过$_POST[]获取。

get是表单的默认提交方式,会把数据附加到表单的action属性所指向的URL中,在URL中可见,安全性较差;post会把数据放到http的包体中,用户一般看不到,安全性较好。
    get传递的数据量受URL长度的限制,故数据量较小,一般只有几kb;而post传递的数据量受php.ini的限制,数据量较大,如果有文件上传的话,表单的提交方式一定要用post。
    get传递的数据会被缓存下来,可能有安全性问题,而post方式没有这个问题。
    get传递的数据通过$_GET[]获取,post传递的数据通过$_POST[]获取。

1、php继承是怎么回事?

单继承:PHP中类的继承属于单继承,一个子类只能继承一个父类。可见性为public protected的属性和方法可以被继承。继承的方法或属性可以被重写,可见性越来越大。

2、php中哪些区分大小写,哪些不区分?

区分大小写:变量
不区分大小写:类名、函数名

3、php中error_reporting()函数的作用?

错误报告级别:error_reporting()函数的作用是临时设置脚本执行过程中的错误报告级别。
@抑制错误信息输出:使用 error_reporting(0) 或者在函数前面加 @,可以抑制错误信息输出,以防止错误消息泄露敏感信息。

error_reporting(E_ALL ^ E_NOTICE);   // 除了E_NOTICE之外,报告所有的错误

4、HTTP状态码401是什么意思?

未经授权:在HTTP1.1中,状态码401的含义是未经授权;如果想返回“找不到文件”,可使用header函数,语句为:header(“HTTP/1.1 404 Not Found”);

5、php中require和include的区别?

警告信息:include 引入文件,如果引入的文件发生错误,会产生一条警告信息,后续的代码会继续执行。
中断后续代码的执行:require引入文件,会更加严谨一些,如果引入的文件发生错误,会抛出一个致命的错误,并中断后续代码的执行。因此我们常常用require引入一个非常重要的文件。

6、数据库 存储引擎 MyISAM 和 InnoDB的区别?

MyISAM:快速查询,表的索引和表的数据是分开存储的
InnoDB:支持事务、外键和行锁等操作,表的索引和数据存储在同一个文件中

MyISAM适合于一些需要大量查询的应用,但其对于有大量写操作并不是很好,MyISAM不支持事务、外键和行锁。MyISAM的每个数据表包括三个文件,分别是表的结构、表的索引和表的数据,表的索引和表的数据是分开存储的。

InnoDB在写操作比较多的时候会更优秀,InnoDB支持事务、外键和行锁。InnoDB的数据表包括两个文件,表的索引和数据存储在同一个文件中,默认是共享表空间,即所有数据表的索引和数据存储在同一个文件中,但也可以设置为独立表空间(若要对数据表采用分区技术,必须设置为独立表空间)。

7、如何得到当前PHP脚本的路径(包括所有参数)?

$_SERVER

echo "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];

8、在php中不使用第三个变量,如何实现交换两个变量的值?

借用list:<?php $a = 1; $b = 2; list($b, $a) = array($a, $b); echo $a.$b;
拼接成字符串:<?php $a = "hello"; $b = "good"; $a = $a.$b; $b = substr($a, 0, strlen($a)-strlen($b)); $a = substr($a, strlen($b)); echo $a.$b
<?php $a = 1; $b = 2; list($b, $a) = array($a, $b); echo $a.$b;

或

<?php $a = "hello"; $b = "good"; $a = $a.$b; $b = substr($a, 0, strlen($a)-strlen($b)); $a = substr($a, strlen($b)); echo $a.$b

9、如何将a.txt文件里的内容追加到b.txt文件中?

file_put_contents和第三个参数 FILE_APPEND

file_put_contents('b.txt', file_get_contents('a.txt'), FILE_APPEND);

二、PHP 10个常见面试题及答案

参考:PHP 10个常见面试题及答案 - 小朱 - CSDN博客
https://blog.csdn.net/xz_src/article/details/73597103

1. PHP的基础知识点

PHP中类的继承属于单继承,一个子类只能继承一个父类。可见性为public protected的属性和方法可以被继承。
继承的方法或属性可以被重写,可见性越来越大。

PHP中的变量名区分大小写,但类名、函数名不区分大小写。

2. error_reporting()函数的作用

error_reporting()函数的作用是临时设置脚本执行过程中的错误报告级别。

error_reporting(E_ALL ^ E_NOTICE);   // 除了E_NOTICE之外,报告所有的错误

使用 error_reporting(0) 或者在函数前面加 @,可以抑制错误信息输出,以防止错误消息泄露敏感信息。

3. HTTP状态码

在HTTP1.1中,状态码401的含义是未经授权;如果想返回“找不到文件”,可使用header函数,语句为:header(“HTTP/1.1 404 Not Found”);

4. require和include的区别

include 引入文件,如果引入的文件发生错误,会产生一条警告信息,后续的代码会继续执行。

require引入文件,会更加严谨一些,如果引入的文件发生错误,会抛出一个致命的错误,并中断后续代码的执行。因此我们常常用require引入一个非常重要的文件。

5. 存储引擎 MyISAM 和 InnoDB的区别

MyISAM适合于一些需要大量查询的应用,但其对于有大量写操作并不是很好,MyISAM不支持事务、外键和行锁。MyISAM的每个数据表包括三个文件,分别是表的结构、表的索引和表的数据,表的索引和表的数据是分开存储的。

InnoDB在写操作比较多的时候会更优秀,InnoDB支持事务、外键和行锁。InnoDB的数据表包括两个文件,表的索引和数据存储在同一个文件中,默认是共享表空间,即所有数据表的索引和数据存储在同一个文件中,但也可以设置为独立表空间(若要对数据表采用分区技术,必须设置为独立表空间)。

6. 如何得到当前PHP脚本的路径(包括所有参数)?

echo "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];

7. 在php中不使用第三个变量,如何实现交换两个变量的值?

<?php $a = 1; $b = 2; list($b, $a) = array($a, $b); echo $a.$b;

<?php $a = "hello"; $b = "good"; $a = $a.$b; $b = substr($a, 0, strlen($a)-strlen($b)); $a = substr($a, strlen($b)); echo $a.$b

8. 自定义一个PHP函数,要求用冒泡排序对数组进行升序排列

<?php function bubbleSort($arr){ $length=count($arr); if($length==0) return false; for($i=0;$i<$length-1;$i++){ for($j=0;$j<$length-$i-1;$j++){ if($arr[$j]>=$arr[$j+1]){ $temp=$arr[$j+1]; $arr[$j+1]=$arr[$j]; $arr[$j]=$temp; } } } return $arr; }

9. 如何将a.txt文件里的内容追加到b.txt文件中?

file_put_contents('b.txt', file_get_contents('a.txt'), FILE_APPEND);

10. 表单提交方式中的get和post有什么区别?

get是表单的默认提交方式,会把数据附加到表单的action属性所指向的URL中,在URL中可见,安全性较差;post会把数据放到http的包体中,用户一般看不到,安全性较好。
    get传递的数据量受URL长度的限制,故数据量较小,一般只有几kb;而post传递的数据量受php.ini的限制,数据量较大,如果有文件上传的话,表单的提交方式一定要用post。
    get传递的数据会被缓存下来,可能有安全性问题,而post方式没有这个问题。
    get传递的数据通过$_GET[]获取,post传递的数据通过$_POST[]获取。

 

php开发面试题---2、php常用面试题二(表单提交方式中的get和post有什么区别)的更多相关文章

  1. 表单:!!!常用JS: form 表单代码

    手机(文本框): <input type="text" name="" maxlength="11" placeholder=&quo ...

  2. struts2视频学习笔记 29-30(Struts 2常用标签,防止表单重复提交)

    课时28 Struts 2常用标签解说 property标签 property标签用于输出指定值: <s:set name="name" value="'kk'&q ...

  3. HTML学习二_HTML常用的行级标签,常用实体字符及表单标签

    HTML常用的行级标签(行内元素)不独占一行### 有语义的行内元素 #### HTML链接 a标签 ```angular2html<a href="链接地址">链接文 ...

  4. Liferay7 BPM门户开发之39: Form表单提交的ProcessAction处理

    在v6.2开始后,需要设置<requires-namespaced-parameters>false</requires-namespaced-parameters>  来避免 ...

  5. javascript 常用的正则表达式验证表单

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. web 开发之js---js 实现地址栏的表单提交加密编码

    以前在做嵌入式web时,曾经想过cgi加密,原来js可以直接实现,太好了,这里js在客户端实现编码和解码 一.在地址栏直接输入:javascript:str=encodeURI("笃行天下& ...

  7. 测开之路一百四十八:WTForms表单验证

    使用WTForms表单验证,可以在数据建模时就设置验证信息和错误提示 创建模型时,设置验证内容,如必填.格式.长度 from flask_wtf import Formfrom wtforms imp ...

  8. 模板:DOM常用场景【表单提交】——javascript结合HTML DOM(或者JQuery)运用

    一.删除行为前的提示 首先要有一个onclick的DOM(点击)事件,和一个JavaScript弹出框:confirm()确认框 <script> function del(){ var ...

  9. php开发面试题---lavarel和tp的区别是什么(呕心整理)

    php开发面试题---lavarel和tp的区别是什么(呕心整理) 一.总结 一句话总结: 反思的回顾非常有用,因为决定了我的方向和技巧 以战养己,这是非常非常好的方式 主要从大小.功能.安全性.操作 ...

随机推荐

  1. Database基础(二):MySQL索引创建与删除、 MySQL存储引擎的配置

    一.MySQL索引创建与删除 目标: 本案例要求熟悉MySQL索引的类型及操作方法,主要练习以下任务: 普通索引.唯一索引.主键索引的创建/删除 自增主键索引的创建/删除 建立员工表yg.工资表gz, ...

  2. 搞懂分布式技术14:Spring Boot使用注解集成Redis缓存

    本文内容参考网络,侵删 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutor ...

  3. stc单片机笔记

    volatile是一个类型修饰符(type specifier).volatile的作用是作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值. 简单地说就是防止编译器对代码进行优 ...

  4. FPGA 报错ERROR:Simulator:861 – Failed to link the design。

    问题综述: 我使用的是windows 10 32位专业版系统,电脑装的是ISE14.4版本,当我用此ISE自带的仿真器ISIM来仿真时,仿真器总是报错ERROR:Simulator:861 – Fai ...

  5. js少写if语句

    1.if else if (bool) { a =1; } else { a = 2 } // 简写 a = bool ? 1 : 2: 2.if if (bool) { a = fn() } //简 ...

  6. ROW_NUMBER() over(order by ID desc ) as RowNumber 返回类型问题

    因为ID是int类型,所以ROW_NUMBER() over(order by ID desc ) as RowNumber 想当然的认为是Int类型 实际ROW_NUMBER() over(orde ...

  7. [轉]User namespaces – available to play!

    User namespaces – available to play! Posted on May 10, 2012by s3hh Over the past few months, Eric Bi ...

  8. pytest框架结构运行规则及命名方式

    Pytest框架结构 Import pytest 类似的setup,teardown同样更灵活,还有个session() 模块级 (setup_module/teardown_module) 不在类中 ...

  9. python图像、视频转字符画

    python图像转字符画需要用到matplotlib.pyplot库,视频转字符画需要用到opencv库,这里的代码基于python 3.5 图像转字符画需要先将图像转为灰度图,转灰度图的公式是 gr ...

  10. 前端学习(十二)js数据类型(笔记)

    选项卡:        for循环 for(初始值,条件,自增){}    for(var i=0; i<9;i++){} 几个按钮对应相同个内容!!! -------------------- ...