文章图片
下面列出了最常见的CodeIgniter面试问题和答案。
1)什么是CodeIgniter?
CodeIgniter是一个开放源代码且功能强大的框架, 用于在PHP上开发Web应用程序。它大致基于MVC模式, 类似于Cake PHP。 CodeIgniter包含库, 简单的界面和逻辑结构, 用于访问这些库, 插件, 帮助程序和其他一些资源, 这些资源解决了PHP的复杂功能, 更易于维护高性能。它简化了PHP代码, 并在更短的时间内发布了一个完全交互式, 动态的网站。
更多细节。
2)CodeIgniter最突出的功能是什么?
CodeIgniter最突出的功能列表:
- 它是一个开放源代码框架, 可以免费使用。
- 重量极轻。
- 它基于模型视图控制器(MVC)模式。
- 它具有功能齐全的数据库类, 并支持多个平台。
- 它是可扩展的。你可以通过使用库, 助手来轻松扩展系统。
- 优秀的文档。
3)解释CodeIgniter的文件夹结构。
如果下载并解压缩CodeIgniter, 将获得以下文件结构/文件夹结构:
应用
- 快取
- 设定档
- 控制器
- 核心
- 错误
- 帮手
- 钩子
- 语言
- 图书馆
- 日志
- 楷模
- 第三方
- 意见
- 核心
- 数据库
- 字型
- 帮手
- 语言
- 图书馆
文章图片
更多细节。
4)解释CodeIgniter架构。
从技术角度来看, CodeIgniter是动态实例化(轻量级), 松散耦合(组件彼此之间的依赖很少)并且具有组件奇异性(每个类和功能都严格地针对其目的)。
CodeIgniter中的数据流
文章图片
更多细节。
5)解释CodeIgniter中的MVC。
CodeIgniter框架基于MVC模式。 MVC是一种软件, 可为你提供与演示视图不同的逻辑视图。因此, 网页包含最少的脚本。
- 模型-控制器管理模型。它代表你的数据结构。模型类包含一些函数, 你可以通过这些函数在数据库中插入, 检索或更新信息。
- 视图-视图是呈现在用户面前的信息。它可以是网页, 也可以是页面的一部分, 例如页眉和页脚。
- 控制器-控制器是模型和视图之间的中介, 以处理HTTP请求并生成网页。控制器收到的所有请求都将传递到模型并进行查看以处理信息。
文章图片
更多细节。
6)说明CodeIgniter中的模型。
模型的职责是处理所有数据逻辑和表示形式, 并在视图中加载数据。它存储在application / models文件夹中。
模型文件的基本结构
文章图片
在这里, 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,
文章图片
更多细节。
10)如何在CodeIgniter中加载视图?
无法直接访问视图。它始终加载在控制器文件中。以下功能用于加载视图页面:
$this->
load->
view('page_name');
将你的视图的页面名称写在括号中。除非使用其他扩展名, 否则无需指定.php。
现在, 转到你的控制器文件(Main.php)并编写此代码, 如下所示。
文章图片
更多细节。
11)说明CodeIgniter中的控制器。
控制器是模型和视图之间的中介, 用于处理HTTP请求并生成网页。它是Web应用程序上每个请求的中心。
考虑以下URI,
abc.com/index.php/front/
在此URI中, CodeIgniter尝试查找Front.php文件和Front类。
控制器语法
文章图片
查看上面的快照, 控制器的文件名是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中的默认方法名称是什么?
默认情况下, 控制器始终调用索引方法。如果要调用其他方法, 则将其写入控制器的文件中, 并在调用函数时指定其名称。
文章图片
查看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_为前缀。
更多细节。
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路由有许多目的。
- 提高页面访问量。
- 向用户隐藏代码复杂性。
挂钩是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中创建驱动程序?
创建驱动程序分三个步骤:
- 制作文件结构
- 制作驱动程序清单
- 制作驱动程序
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 Collection面试题
Servlet面试问题
春季面试问题
PL / SQL面试问题
Oracle面试问题
【史上最全!CodeIgniter面试题和答案汇总】SQL Server面试问题
推荐阅读
- 记录学习Appium踩过的一些坑(持续更新)
- C#常见面试题和答案合集详解
- 面试必备!WordPress面试题和知识点汇总
- 史上最全!Magento面试题和答案合集
- 推荐!Joomla面试题和答案汇集
- 最新Drupal面试问题和知识点合集
- 最新AngularJS面试题和答案汇总
- 面试宝典!SVG面试题和答案汇集
- 推荐!Pure.CSS常见面试题和答案合集