CodeIgniter面试题及答案 - [ Web技术面试题及答案 ]

CodeIgniter是一个开源且功能强大的框架,用于在PHP上开发Web应用程序。 它松散地基于MVC模式,类似于Cake PHP。通过阅读下面CodeIgniter面试题和答案,有助于让您在面试过程中应付自如,也可作为测评或复习巩固CodeIgniter知识。

1. CodeIgniter是什么?

CodeIgniter是一个开源且功能强大的框架,用于在PHP上开发Web应用程序。 它松散地基于MVC模式,类似于Cake PHP。 CodeIgniter包含库,简单的接口和逻辑结构,可以访问这些库,插件,帮助程序和其他一些资源,这些资源可以更轻松地解决PHP的复杂功能,从而保持高性能。 它简化了PHP代码,并在更短的时间内创建了一个完全交互式的动态网站。详细答案>>

2. CodeIgniter最突出的特点是什么?

CodeIgniter最突出的功能列表: 它是一个开源框架,可以免费使用。它重量极轻。它基于模型视图控制器(MVC)模式。它具有全功能的数据库类和对多个平台的支持。它是可扩展的。可以使用库,帮助程序轻松扩展系统。优秀的开发和使用文档。详细答案>>

3. 解释说明CodeIgniter的文件夹结构。

如果下载并解压缩CodeIgniter,将获得以下文件结构/文件夹结构: Application cacheConfigControllerscoreerrorshelpershookslanguagelibrarieslogsmodelsthird-partyviewssystem core databasefontshelperslanguagelibraries详细答案>>

4. 请解释说明CodeIgniter架构?

从技术角度来看,CodeIgniter是动态实例化(轻量级),松散耦合(组件彼此依赖较少)并且具有组件奇点(每个类和函数都狭隘地专注于其目的)。 CodeIgniter中的数据流 - 详细答案>>

5. 在CodeIgniter中MVC是什么?

CodeIgniter框架基于MVC模式。 MVC是一种软件,可以从演示文稿视图中为您提供单独的逻辑视图。 因此,网页包含最少的脚本。 模型 - Controller管理模型。它代表数据结构。 模型类包含可以在数据库中插入,检索或更新信息的函数。视图 - 视图是在用户面前显示的信息。它可以是一个网页,也可以是页眉和页脚之类的部分。控制器 - 控制器是模型和视图之间的中介,用于处理HTTP请求并生成网页。 控制器收到的所有请求都会传递给模型并查看以处理信息。详细答案>>

6. 在CodeIgniter中模型是什么?

模型(Model)的职责是处理视图中的所有数据逻辑和表示以及加载数据。 它存储在application/models文件夹中。 模型文件的基本结构: 这里,ModelName是模型文件的名称。 类的首字母必须是大写字母后跟小写字母,它应该与文件名相同。 它扩展了基本CodeIgniter模型,以便将父模型文件的所有内置方法继承到新创建的文件。详细答案>>

7. 如何在CodeIgniter中添加或加载模型?

要在控制器功能中加载模型,请使用以下功能: $this->load->model('ModelName'); 如果模型文件位于models文件夹的子目录中,则必须提及完整路径。 例如,如果文件位置是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/ 将加载Welcome.php,因为URL中没有指定文件名。 虽然根据需要,您可以在文件application/config/routes.php中更改默认控制器。 $route['default_controller'] = 'your-default-control...详细答案>>

13. 如何在CodeIgniter中调用构造函数?

要使用构造函数,需要提及以下代码行,

parent::_construct();
详细答案>>

14. 基本的CodeIgniter URL结构是什么?

它使用基于段的方法,而不是使用“查询字符串”方法。 其结构如下, abc.com/class/function/ID class表示需要调用的控制器类。function是被调用的方法。ID是传递给控制器的附加段。详细答案>>

15. 什么是CodeIgniter的Inhibitor?

在CodeIgniter中,Inhibitor是一个错误处理程序类,它使用本机PHP函数(如set_exception_handler,set_error_handler,register_shutdown_function)来处理解析错误,异常和致命错误。详细答案>>

16. CodeIgniter中的默认方法名称是什么?

默认情况下,控制器始终调用index方法 如果要调用其他方法,则将其写入控制器文件并在调用函数时指定其名称。 如下面的URL中,没有指定方法名称。 因此,默认情况下会加载index方法。详细答案>>

17. CodeIgniter中的重映射方法调用是什么?

URI的第二段确定调用哪个方法。如果要覆盖它,可以使用_remap()方法。即使URI不同,也始终会调用_remap方法。 它会覆盖URI。 例如: public function _remap($methodName) { if ($methodName === 'a_method') { $this->method(); } else { $this->defaultM...详细答案>>

18. CodeIgniter中的助手是什么? 如何加载助手文件?

助手是用于帮助用户执行特定任务的一组函数功能。

  • URL助手:用于创建链接。
  • 文本助手:用于文本格式。
  • Cookies助手:用于读取和设置cookie。
详细答案>>

19. CodeIgniter中如何加载多个助手文件?

要加载多个助手文件,请在数组中指定它们,

$this->load->helper(  
    array('helper1', 'helper2', 'helper3')  
);
详细答案>>

20. 在CodeIgniter如何加载库?

CodeIgniter提供了丰富的库集。 它是CodeIgniter的重要组成部分,因为它可以提高应用程序的开发速度。它位于system/library中。 它可以加载如下, $this->load->library('class_name'); 详细答案>>

21. 如何在CodeIgniter中创建库?

创建库有三种方法,

  • 创建一个全新的库
  • 扩展本机库
  • 替换本机库
详细答案>>

22. 新创建的库存储在CodeIgniter结构中的哪个位置?

新创建的库应该放在application/libraries文件夹中。

详细答案>>

23. 可以在CodeIgniter中扩展本机库吗?

是的,可以通过添加一个或两个方法向本机库添加一些扩展功能。 它用新版本替换整个库。 所以扩展类更好。 扩展和替换几乎完全相同,只有以下例外情况。 类声明必须扩展父类。新的类名和文件名必须以MY_为前缀。 例如,要将其扩展到本机日历,请在application/libraries文件夹中创建文件MY_Calendar.php。类声明为class MY_Calendar extends CI_Calendar}。详细答案>>

24. 如何在CodeIgniter中扩展一个类?

构建一个文件名application/core/MY_Input.php,并使用类Class MY_Input extends CI_Input {}声明新类,以扩展CodeIgniter中的本机输入类。

详细答案>>

25. CodeIgniter中的路由是什么?

路由是一种技术,可以根据需要定义URL,而不是使用预定义的URL。路径可以通过两种方式分类,使用通配符或正则表达式。 通配符 通配符有两种类型: :num-series仅包含匹配的数字。:any−series仅包含匹配的字符。 正则表达式 正则表达式也用于重定向路由。 $route['blog'(a-zA-Z0-9]+)'] = 'women/social'; 可以创建正则表达式来运行URL。详细答案>>

26. 为什么需要配置URL路由?

URL路由配置有很多用途。

  • 改善页面访问次数。
  • 对用户隐藏代码复杂性。
详细答案>>

27. CodeIgniter中有哪些钩子?

Hook是CodeIgniter中的一个功能,它提供了一种在不破坏核心文件的情况下更改框架内部工作的方法。 它有助于使用CodeIgniter中的特定路径执行脚本。 通常,它在application/config/hooks.php文件中定义。详细答案>>

28. 如何启用CodeIgniter钩子?

要启用挂钩,请转到application/config/config.php/file并将其设置为TRUE,如下所示,

$config['enable_hooks'] = TRUE;
详细答案>>

29. CodeIgniter中有哪些不同类型的挂钩点?

CodeIgniter中不同类型的挂钩点列表: post_controller_constructor - 在控制器启动之后但在任何方法调用之前立即调用它。pre_controller - 在调用控制器之前立即调用它。此时,所有类,安全检查和路由都已完成。post_sytem - 在系统执行结束时将最终页面发送到浏览器之后调用它。pre_system - 在系统执行之前调用它。此时只加载了基准和钩子类。cache_override - 它可以在输出类中调用函数。display_override - ...详细答案>>

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 = $this->security->xss_clean($data); 第二个参数is_image是可选的,用于测试XSS攻击的图像。 当此参数设置为TRUE时,它不会返回更改的字符串。 相反,如果图像是安全的,则返回T...详细答案>>

37. CodeIgniter如何防止CSRF?

可以通过各种方式阻止CSRI中的CodeIgniter。 最常用的方法是在网站的每个页面中使用隐藏字段。 隐藏字段存储在用户的会话中。 每个HTTP请求都会更改字段。 可以在其对网站的每个请求中检测用户。 隐藏值始终与会话中保存的值进行比较。 如果相同,则请求有效。详细答案>>

38. 如何启用CSRF?

可以通过编辑config.php文件并将其设置为启用保护 要启用CSRF,请在application/config/config.php文件中使用以下语句为TRUE。 $config['csrf_protection'] = TRUE; 详细答案>>

39. 什么是CodeIgniter中的CSRF攻击?

CSRF攻击强制登录受害者的浏览器向Web应用程序发送伪造的HTTP请求,包括受害者的会话cookie和其他身份验证信息。 例如,假设有一个包含表单的站点。 攻击者可能会在其网站上创建虚假表单。 此表单可能包含隐藏的输入和恶意数据。 此表单不会发送到攻击者的网站,但实际上它来自您的网站。 如果认为表单是真实的,您的网站会处理它。 现在假设攻击者的表单指向您站点中的删除表单。 如果用户已登录并重定向到攻击者的站点然后执行搜索,则他的帐户将在不知情的情况下被删除。 这就是CSRF攻击。详细答案>>

40. CSRF攻击中的令牌方法是什么?

为了防止CSRF,需要连接HTTP请求,表单请求和表单提交。 有几种方法可以做到这一点,但在CodeIgniter中使用了隐藏字段,称为CSRF令牌。 CSRF令牌是随机值,随着发送的每个HTTP请求而变化。 对于每个请求,都会生成一个新的CSRF令牌。 创建对象时,将设置令牌的名称和值。 $this->csrf_cookie_name = $this->csrf_token_name; $this->_csrf_set_hash(); 它的函数实现是: function _cs...详细答案>>
注: 此试题仅作为相关知识水平测试,不能作为权威试题和答案。非商业转载注明原文链接即可;商业转载需本站授权同意。