史上最全!CodeIgniter面试题和答案汇总

史上最全!CodeIgniter面试题和答案汇总

文章图片
下面列出了最常见的CodeIgniter面试问题和答案。
1)什么是CodeIgniter?
CodeIgniter是一个开放源代码且功能强大的框架, 用于在PHP上开发Web应用程序。它大致基于MVC模式, 类似于Cake PHP。 CodeIgniter包含库, 简单的界面和逻辑结构, 用于访问这些库, 插件, 帮助程序和其他一些资源, 这些资源解决了PHP的复杂功能, 更易于维护高性能。它简化了PHP代码, 并在更短的时间内发布了一个完全交互式, 动态的网站。
更多细节。
2)CodeIgniter最突出的功能是什么?
CodeIgniter最突出的功能列表:
  • 它是一个开放源代码框架, 可以免费使用。
  • 重量极轻。
  • 它基于模型视图控制器(MVC)模式。
  • 它具有功能齐全的数据库类, 并支持多个平台。
  • 它是可扩展的。你可以通过使用库, 助手来轻松扩展系统。
  • 优秀的文档。
更多细节。
3)解释CodeIgniter的文件夹结构。
如果下载并解压缩CodeIgniter, 将获得以下文件结构/文件夹结构:
应用
  • 快取
  • 设定档
  • 控制器
  • 核心
  • 错误
  • 帮手
  • 钩子
  • 语言
  • 图书馆
  • 日志
  • 楷模
  • 第三方
  • 意见
系统
  • 核心
  • 数据库
  • 字型
  • 帮手
  • 语言
  • 图书馆
史上最全!CodeIgniter面试题和答案汇总

文章图片
更多细节。
4)解释CodeIgniter架构。
从技术角度来看, CodeIgniter是动态实例化(轻量级), 松散耦合(组件彼此之间的依赖很少)并且具有组件奇异性(每个类和功能都严格地针对其目的)。
CodeIgniter中的数据流
史上最全!CodeIgniter面试题和答案汇总

文章图片
更多细节。
5)解释CodeIgniter中的MVC。
CodeIgniter框架基于MVC模式。 MVC是一种软件, 可为你提供与演示视图不同的逻辑视图。因此, 网页包含最少的脚本。
  • 模型-控制器管理模型。它代表你的数据结构。模型类包含一些函数, 你可以通过这些函数在数据库中插入, 检索或更新信息。
  • 视图-视图是呈现在用户面前的信息。它可以是网页, 也可以是页面的一部分, 例如页眉和页脚。
  • 控制器-控制器是模型和视图之间的中介, 以处理HTTP请求并生成网页。控制器收到的所有请求都将传递到模型并进行查看以处理信息。
史上最全!CodeIgniter面试题和答案汇总

文章图片
更多细节。
6)说明CodeIgniter中的模型。
模型的职责是处理所有数据逻辑和表示形式, 并在视图中加载数据。它存储在application / models文件夹中。
模型文件的基本结构
史上最全!CodeIgniter面试题和答案汇总

文章图片
在这里, ModelName是模型文件的名称。请记住, 类的第一个字母必须是大写字母, 然后是其他小写字母, 并且应该与文件名相同。它扩展了基本CodeIgniter模型, 以便父模型文件的所有内置方法都继承到新创建的文件。
更多细节。
7)如何在CodeIgniter中添加或加载模型?
要在控制器功能中加载模型, 请使用以下功能:
$this-> load-> model('ModelName');

如果你的模型文件位于模型文件夹的子目录中, 则必须提及完整路径。例如, 如果你的文件位置是application / controller / models / project / ModelName。然后, 你的文件将如下所示加载,
$this-> load-> model('project/ModelName');

8)如何手动将模型连接到数据库?
要手动连接数据库, 请使用以下语法,
$this-> load-> database();

更多细节。
9)在CodeIgniter中解释视图。
View文件夹包含所有标记文件, 如页眉, 页脚, 侧边栏等。可以通过将其嵌入控制器文件中的任何位置来重用它们。它们无法直接调用, 必须将它们加载到控制器的文件中。
查看语法 创建一个文件并将其保存在application / views文件夹中。例如, 我们创建了一个文件Firstview.php,
史上最全!CodeIgniter面试题和答案汇总

文章图片
更多细节。
10)如何在CodeIgniter中加载视图?
无法直接访问视图。它始终加载在控制器文件中。以下功能用于加载视图页面:
$this-> load-> view('page_name');

将你的视图的页面名称写在括号中。除非使用其他扩展名, 否则无需指定.php。
现在, 转到你的控制器文件(Main.php)并编写此代码, 如下所示。
史上最全!CodeIgniter面试题和答案汇总

文章图片
更多细节。
11)说明CodeIgniter中的控制器。
控制器是模型和视图之间的中介, 用于处理HTTP请求并生成网页。它是Web应用程序上每个请求的中心。
考虑以下URI,
abc.com/index.php/front/

在此URI中, CodeIgniter尝试查找Front.php文件和Front类。
控制器语法
史上最全!CodeIgniter面试题和答案汇总

文章图片
查看上面的快照, 控制器的文件名是Main.php(首字母必须大写), 而类名是Main(首字母必须大写)。
更多细节。
12)CodeIgniter中的默认控制器是什么?
URL中未提及文件名时, 默认加载的默认控制器中指定的文件。默认情况下, 它是welcome.php, 这是安装CodeIgniter之后显示的第一页。
带URL
localhost/codeigniter/

由于URL中未提及文件名, 因此将加载Welcome.php。
尽管根据需要, 你可以在文件application / config / routes.php中更改默认控制器。
$route['default_controller'] = ' ';

在这里, 指定你要默认加载的文件名。
更多细节。
13)你将如何在CodeIgniter中调用构造函数?
要使用构造函数, 你需要提及以下代码行,
parent::_construct()

更多细节。
14)基本的CodeIgniter URL结构是什么?
代替使用” 查询字符串” 方法, 它使用基于段的方法。
其结构如下
abc.com/class/function/ID

该类表示需要调用的控制器类。
该函数是被调用的方法。
ID是传递给控制器??的附加段。
15)什么是CodeIgniter的抑制剂?
在CodeIgniter中, Inhibitor是一个错误处理程序类, 它使用本机PHP函数(如set_exception_handler, set_error_handler, register_shutdown_function)来处理解析错误, 异常和致命错误。
16)CodeIgniter中的默认方法名称是什么?
默认情况下, 控制器始终调用索引方法。如果要调用其他方法, 则将其写入控制器的文件中, 并在调用函数时指定其名称。
史上最全!CodeIgniter面试题和答案汇总

文章图片
查看URL。没有提及方法名称。因此, 默认情况下会加载索引方法。
更多细节。
17)解释CodeIgniter中的重映射方法调用。
URI的第二部分确定正在调用哪个方法。如果要覆盖它, 则可以使用_remap()方法。即使URI不同, 也始终会调用_remap方法。它覆盖URI。例如:
public function _remap($methodName) { if ($methodName === 'a_method') { $this-> method(); } else { $this-> defaultMethod(); } }

更多细节。
18)什么是CodeIgniter的助手?如何加载帮助文件?
助手是用于帮助用户执行特定任务的一组功能。
URL助手:用于创建链接。
文本助手:用于文本格式化。
Cookies助手:用于读取和设置Cookie。
更多细节。
19)如何加载多个帮助文件?
要加载多个帮助程序文件, 请在数组中指定它们,
$this-> load-> helper( array('helper1', 'helper2', 'helper3') );

更多细节。
20)解释CodeIgniter库。你将如何加载?
CodeIgniter提供了一组丰富的库。它是CodeIgniter的重要组成部分, 因为它提高了应用程序的开发速度。它位于系统/库中。
可以如下加载
$this-> load-> library('class_name');

更多细节。
21)如何在CodeIgniter中创建库?
有三种创建库的方法,
  • 创建一个全新的库
  • 扩展本地库
  • 替换本机库
更多细节。
22)CodeIgniter结构中新存储的库在哪里?
它应该放在application / libraries文件夹中。
更多细节。
23)可以在CodeIgniter中扩展本机库吗?
是的, 我们可以通过添加一种或两种方法来向本机库添加一些扩展功能。它用你的版本替换了整个库。因此最好扩展类。扩展和替换几乎相同, 只有以下例外。
  • 类声明必须扩展父类。
  • 新的类名和文件名必须以MY_为前缀。
例如, 要将其扩展到本机Calendar, 请在application / libraries文件夹中创建一个文件MY_Calendar.php。你声明为MY_Calendar类的课程扩展了CI_Calendar}
更多细节。
24)如何在CodeIgniter中扩展类?
你必须构建文件名application / core / MY_Input.php并使用Class MY_Input扩展CI_Input {}声明你的类, 以扩展CodeIgniter中的本机输入类。
25)CodeIgniter中的路由是什么?
路由是一种可以根据要求定义URL的技术, 而不是使用预定义的URL。可以使用通配符或正则表达式两种方式对路由进行分类。
通配符 有两种通配符:
  • :num-series只包含匹配的数字。
  • :any-series只包含匹配的字符。
正则表达式 正则表达式也用于重定向路由。
$ route [‘ blog'(a-zA-Z0-9] +)’ ] =’ 妇女/社交’ ;
你可以创建正则表达式来运行URL。
更多细节。
26)为什么需要配置URL路由?
配置URL路由有许多目的。
  1. 提高页面访问量。
  2. 向用户隐藏代码复杂性。
27)CodeIgniter中的钩子是什么?
挂钩是CodeIgniter中的一项功能, 它提供了一种无需更改核心文件即可更改框架内部工作的方法。它可以帮助你执行CodeIgniter中具有特定路径的脚本。通常, 它是在application / config / hooks.php文件中定义的。
更多细节。
28)如何启用CodeIgniter挂钩?
要启用挂钩, 请转到application / config / config.php /文件并将其设置为TRUE, 如下所示,
$config['enable_hooks'] = TRUE;

更多细节。
29)CodeIgniter中有哪些不同类型的挂钩点?
CodeIgniter中不同类型的挂钩点的列表:
  • post_controller_constructor-在启动控制器之后但在任何方法调用之前立即调用它。
  • pre_controller-在调用控制器之前立即调用它。至此, 所有类, 安全性检查和路由均已完成。
  • post_sytem-在系统执行结束时将最终页面发送到浏览器后调用。
  • pre_system-在系统执行之前被调用。此时, 仅基准和钩子类已加载。
  • cache_override-它使你可以在输出类中调用函数。
  • display_override-用于在文件执行结束时发送最后一页。
  • post_controller-控制器完全执行后立即调用。
更多细节。
30)什么是CodeIgniter驱动程序?
这些是具有父类和许多子类的特殊类型的库。这些子类有权访问父类, 但不能访问其父级。驱动程序位于system / libraries文件夹中。
更多细节。
31)如何在CodeIgniter中初始化驱动程序?
要初始化驱动程序, 请编写以下语法,
$this-> load-> driver('class_name');

在这里, class_name是驱动程序名称。
更多细节。
32)如何在CodeIgniter中创建驱动程序?
创建驱动程序分三个步骤:
  1. 制作文件结构
  2. 制作驱动程序清单
  3. 制作驱动程序
更多细节。
33)如何在CodeIgniter中连接多个数据库?
要同时连接多个数据库, 请执行以下操作,
$db1 = $this-> load-> database('group_one', TRUE); $db1 = $this-> load-> database('group_two', TRUE);

更多细节。
34)如何在CodeIgniter模型中打印SQL语句?
$this> db> insertid();

35)什么是CodeIgniter安全方法?
CodeIgniter安全方法有助于创建安全的应用程序并处理输入数据。方法如下:
  • XSS过滤
  • CSRF(跨站伪造)
  • 类参考
更多细节。
36)XSS安全参数是什么?
XSS代表跨站点脚本。 Codeigniter包含一个跨站点脚本黑客防范过滤器。 XSS过滤器的目标方法是触发JavaScript或其他类型的可疑代码。如果检测到任何东西, 它将数据转换为字符实体。
XSS过滤使用xss_clean()方法来过滤数据。
$data = http://www.srcmini.com/$this-> security-> xss_clean($data);

有一个可选的第二个参数is_image, 用于测试XSS攻击的映像。当此参数设置为TRUE时, 它不会返回更改后的字符串。相反, 如果图像安全, 则返回TRUE, 如果包含恶意信息, 则返回FALSE。
if ($this-> security-> xss_clean($file, TRUE) === FALSE) { //file failed in xss test }

更多细节。
37)如何防止CodeIgniter进入CSRF?
我们可以通过多种方式来防止CodeIgniter进入CSRF。最常用的方法是使用网站每个页面中的隐藏字段。隐藏的字段存储在用户的会话中。每个HTTP请求都会更改该字段。可以在对网站的每个请求中检测到用户。始终将隐藏值与会话中保存的值进行比较。如果相同, 则请求有效。
更多细节。
38)如何启用CSRF?
你可以通过编辑config.php文件并将其设置为来启用保护
要启用CSRF, 请在application / config / config.php文件中的FALSE中使以下语句为TRUE。
$config['csrf_protection'] = TRUE;

更多细节。
39)CodeIgniter中的CSRF攻击是什么?
CSRF攻击迫使登录的受害者的浏览器将伪造的HTTP请求(包括受害者的会话cookie和其他身份验证信息)发送到Web应用程序。
例如, 假设你有一个带有表单的网站。攻击者可以在其站点上创建伪造表单。该表格可能包含隐藏的输入和恶意数据。该表格不会发送到攻击者的网站, 实际上, 它是到达你的网站的。考虑到该表格是真实的, 你的网站将对其进行处理。
现在, 假设攻击者的表单指向你网站中的删除表单。如果用户登录并重定向到攻击者的站点, 然后执行搜索, 则该用户的帐户将被删除, 而他不知道。那就是CSRF攻击。
更多细节。
40)CSRF攻击中的令牌方法是什么?
为了防止CSRF, 我们需要同时连接HTTP请求, 表单请求和表单提交。有几种方法可以执行此操作, 但是在CodeIgniter中使用了隐藏字段, 称为CSRF令牌。 CSRF令牌是随每个发送的HTTP请求而变化的随机值。
对于每个请求, 都会生成一个新的CSRF令牌。创建对象时, 将设置令牌的名称和值。
$this-> csrf_cookie_name = $this-> csrf_token_name; $this-> _csrf_set_hash();

它的功能是
function _csrf_set_hash() { if ($this-> csrf_hash == '') { if ( isset($_COOKIE[$this-> csrf_cookie_name] ) AND $_COOKIE[$this-> csrf_cookie_name] != '' ) { $this-> csrf_hash = $_COOKIE[$this-> csrf_cookie_name]; } else { $this-> csrf_hash = md5(uniqid(rand(), TRUE)); } } return $this-> csrf_hash; }

更多细节。
Java OOP面试问题
Java字符串和异常问题
JDBC面试问题
JSP面试问题
休眠面试问题
SQL面试题
Android面试题
MySQL面试问题
Java基础面试问题
Java多线程问题
Java Collection面试题
Servlet面试问题
春季面试问题
PL / SQL面试问题
Oracle面试问题
【史上最全!CodeIgniter面试题和答案汇总】SQL Server面试问题

    推荐阅读