个性化阅读
专注于IT技术分析

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

CodeIgniter面试问答

下面列出了最常见的CodeIgniter面试问题和答案。

1)什么是CodeIgniter?

CodeIgniter是一个开放源代码且功能强大的框架, 用于在PHP上开发Web应用程序。它大致基于MVC模式, 类似于Cake PHP。 CodeIgniter包含库, 简单的界面和逻辑结构, 用于访问这些库, 插件, 帮助程序和其他一些资源, 这些资源解决了PHP的复杂功能, 更易于维护高性能。它简化了PHP代码, 并在更短的时间内发布了一个完全交互式, 动态的网站。

更多细节。


2)CodeIgniter最突出的功能是什么?

CodeIgniter最突出的功能列表:

  • 它是一个开放源代码框架, 可以免费使用。
  • 重量极轻。
  • 它基于模型视图控制器(MVC)模式。
  • 它具有功能齐全的数据库类, 并支持多个平台。
  • 它是可扩展的。你可以通过使用库, 助手来轻松扩展系统。
  • 优秀的文档。

更多细节。


3)解释CodeIgniter的文件夹结构。

如果下载并解压缩CodeIgniter, 将获得以下文件结构/文件夹结构:

应用

  • 快取
  • 设定档
  • 控制器
  • 核心
  • 错误
  • 帮手
  • 钩子
  • 语言
  • 图书馆
  • 日志
  • 楷模
  • 第三方
  • 意见

系统

  • 核心
  • 数据库
  • 字型
  • 帮手
  • 语言
  • 图书馆
面试CodeIgniter 1

更多细节。


4)解释CodeIgniter架构。

从技术角度来看, CodeIgniter是动态实例化(轻量级), 松散耦合(组件彼此之间的依赖很少)并且具有组件奇异性(每个类和功能都严格地针对其目的)。

CodeIgniter中的数据流
Codelgniter架构1

更多细节。


5)解释CodeIgniter中的MVC。

CodeIgniter框架基于MVC模式。 MVC是一种软件, 可为你提供与演示视图不同的逻辑视图。因此, 网页包含最少的脚本。

  • 模型-控制器管理模型。它代表你的数据结构。模型类包含一些函数, 你可以通过这些函数在数据库中插入, 检索或更新信息。
  • 视图-视图是呈现在用户面前的信息。它可以是网页, 也可以是页面的一部分, 例如页眉和页脚。
  • 控制器-控制器是模型和视图之间的中介, 以处理HTTP请求并生成网页。控制器收到的所有请求都将传递到模型并进行查看以处理信息。
模型视图控制器

更多细节。


6)说明CodeIgniter中的模型。

模型的职责是处理所有数据逻辑和表示形式, 并在视图中加载数据。它存储在application / models文件夹中。

模型文件的基本结构
Codelginator型号1

在这里, 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,

Codeignter视图1

更多细节。


10)如何在CodeIgniter中加载视图?

无法直接访问视图。它始终加载在控制器文件中。以下功能用于加载视图页面:

$this->load->view('page_name');

将你的视图的页面名称写在括号中。除非使用其他扩展名, 否则无需指定.php。

现在, 转到你的控制器文件(Main.php)并编写此代码, 如下所示。

Codeigntor视图2

更多细节。


11)说明CodeIgniter中的控制器。

控制器是模型和视图之间的中介, 用于处理HTTP请求并生成网页。它是Web应用程序上每个请求的中心。

考虑以下URI,

abc.com/index.php/front/

在此URI中, CodeIgniter尝试查找Front.php文件和Front类。

控制器语法
控制器1

查看上面的快照, 控制器的文件名是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方法1

查看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 = $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面试问题

SQL Server面试问题

赞(0) 打赏
未经允许不得转载:srcmini » 史上最全!CodeIgniter面试题和答案汇总
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏