Php知识点-CI

1、简述什么是CodeIgniter 框架 ?

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

2、简述CodeIgniter最突出的功能优势 ?


(1)开放源代码框架, 免费使用。


(2)重量极轻。


(3)它基于模型视图控制器(MVC)模式。


(4)它具有功能齐全的数据库类, 并支持多个平台。


(5)它是可扩展的。你可以通过使用库, 助手来轻松扩展系统。


(6)优秀的文档

3、列举解释CodeIgniter的文件夹结构 ?

|-----system 框架程序目录

|-----core 框架的核心程序
|-----Common.php 加载基类库的公共函数


|-----Controller.php 基控制器类:CI_Controller


|-----Model.php 基模型类:CI_Model


|-----Config.php 配置类:CI_Config


|-----Input.php 输入类:CI_Input


|-----Output.php 输出类:CI_Output


|-----Router.php 路由类:CI_Router


|-----Loader.php 加载类:CI_Loader


|-----helpers 辅助函数


|-----libraries 通用类库


|-----language 语言包


|-----database 数据库操作相关的程序


|-----application 项目目录


|-----logs 日志

4、解释CodeIgniter架构和处理流程 ?

(1)每当一个请求来到CodeIgniter,它将首先进入index.php页面;

(2)在第二步中,路由(Routing)将决定是否将该请求传递给第3步进行缓存,或将该请求传递给第4步进行安全检查;
(3)如果被请求的页面已经在缓存(Caching)中,那么路由(Routing)将把请求传递给第3步,响应将返回给用户;

(4)如果请求的页面不存在于缓存(Caching)中,那么路由(Routing)将把请求的页面传递给第4步进行安全(Security)检查;

(5)在将请求传递给应用控制器(Application Controller)之前,要检查所提交数据的安全(Security)。在安全检查之后,应用控制器加载必要的模型(Models)、库(Libraries)、助手(Helpers)、插件(Plugins)和脚本(Scripts),并将其传递给视图(View);

(6)视图(View)将用可用数据渲染页面,并将其传递给缓存(Caching)。由于请求的页面之前没有被缓存,所以这次它将被缓存在缓存(Caching)中,以便为未来的请求快速处理这个页面

5、解释CodeIgniter中的MVC ?

Model:模式。一般用来写具体的功能(如实现算法、数据库的更新等)

View:视图。通常是web的页面。在view中也可以把页面拆分成几个部分 比header和footer 从而实现类似于模板语言的功能。

Controller:控制。负责连接 model 和view。将view里面的请求转发到model里面进行处理

6、说明CodeIgniter中的模型 ?

型是CodeIgniter框架中的另一个核心组件,负责处理数据存储和检索,模型可以与数据库进行交互,执行SQL查询、插入、更新和删除等操作,在CodeIgniter中,模型通常使用ActiveRecord类来简化数据库操作。

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

自动加载(自动加载模型):

手动加载(在控制器中加载模型):

在模型名称中使用路径(当模型不在默认文件夹中时):

8、CodeIgniter如何手动将模型连接到数据库?


$this->load->database();

9、简述CodeIgniter中解释视图?

视图是 CodeIgniter 中用于存储应用程序输出的标记的特殊文件,通常由 HTML 和简单的 PHP 标记组成,视图从控制器方法内加载,视图内的内容随后显示在浏览器中。

10、说明CodeIgniter中的控制器 ?

控制器是CodeIgniter框架的基本组成部分,它是Web应用程序的所有请求的入口点。 在CodeIgniter框架中,每个Web应用程序都至少有一个控制器。 控制器通过接受HTTP请求,并调用相关的模型(Models)和视图(Views)以响应这些请求。

在CodeIgniter框架中,控制器是通过创建一个继承于CI_Controller类的PHP类实现的

11、CodeIgniter中的默认控制器是什么?

welcome控制器

12、如何在CodeIgniter中调用构造函数?

13、简述基本的CodeIgniter URL结构 ?

基本的URL结构可以表示为http://yourdomain.com/index.php/class/function/id

http://yourdomain.com/ 是你的域名。

index.php 是入口文件。

class 是控制器名,不带_controller后缀。

function 是控制器中的方法名。

id 是传递给方法的可选参数。

14、简述什么是CodeIgniter的抑制剂?

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

15、简述CodeIgniter中的默认方法名称是什么?

默认调用索引方法index

16、解释CodeIgniter中的重映射方法调用

URI的第二部分确定正在调用哪个方法。如果要覆盖它, 则可以使用_remap()方法。即使URI不同, 也始终会调用_remap方法。它覆盖URI

17、简述什么是CodeIgniter的助手?如何加载帮助文件?

助手是用于帮助用户执行特定任务的一组功能。
URL Helpers:用于创建链接。
文本助手:用于文本格式。
Cookies助手:用于读取和设置Cookie

18、简述CodeIgniter 如何加载多个帮助文件?

要加载多个帮助程序文件,请在数组中指定它们,
$this->load->helper(
array('helper1', 'helper2', 'helper3')
);

19、解释CodeIgniter库。你将如何加载?

CodeIgniter提供了一组丰富的库。它是CodeIgniter的重要组成部分, 因为它提高了应用程序的开发速度。它位于系统/库中。

$this-> load-> library('class_name');

20、如何在CodeIgniter中创建库?

有三种创建库的方法,

  • 创建一个全新的库
  • 扩展本地库
  • 替换本机库
  1. CodeIgniter结构中新存储的库在哪里?
    放在application / libraries文件夹中。

22、可以在CodeIgniter中扩展本机库吗?
是的, 我们可以通过添加一种或两种方法来向本机库添加一些扩展功能。它用你的版本替换了整个库。因此最好扩展类。扩展和替换几乎相同, 只有以下例外。

  • 类声明必须扩展父类。
  • 新的类名和文件名必须以MY_为前缀

23、如何在CodeIgniter中扩展类?
你必须构建文件名application / core / MY_Input.php并使用Class MY_Input扩展CI_Input {}声明你的类, 以扩展CodeIgniter中的本机输入类。

24、CodeIgniter中的路由是什么?

路由是一种可以根据要求定义URL的技术, 而不是使用预定义的URL。可以使用通配符或正则表达式两种方式对路由进行分类。
通配符 有两种通配符:

  • :num-series只包含匹配的数字。
  • :any-series只包含匹配的字符。

正则表达式 正则表达式也用于重定向路由

25、CodeIgniter中的钩子是什么?
挂钩是CodeIgniter中的一项功能, 它提供了一种无需更改核心文件即可更改框架内部工作的方法。它可以帮助你执行CodeIgniter中具有特定路径的脚本。通常, 它是在application / config / hooks.php文件中定义的

26、如何启用CodeIgniter挂钩?

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


$config['enable_hooks'] = TRUE;

27、CodeIgniter中有哪些不同类型的挂钩点?

  • post_controller_constructor-在启动控制器之后但在任何方法调用之前立即调用它。
  • pre_controller-在调用控制器之前立即调用它。至此, 所有类, 安全性检查和路由均已完成。
  • post_sytem-在系统执行结束时将最终页面发送到浏览器后调用。
  • pre_system-在系统执行之前被调用。此时, 仅基准和钩子类已加载。
  • cache_override-它使你可以在输出类中调用函数。
  • display_override-用于在文件执行结束时发送最后一页。
  • post_controller-控制器完全执行后立即调用。

28、什么是CodeIgniter驱动程序?
这些是具有父类和许多子类的特殊类型的库。这些子类有权访问父类, 但不能访问其父级。驱动程序位于system / libraries文件夹中。

29、如何在CodeIgniter中初始化驱动程序?

$this-> load-> driver('class_name');

class_name是驱动程序名称。

30、如何在CodeIgniter中连接多个数据库?


$db1 = $this->load->database('group_one', TRUE);


$db1 = $this->load->database('group_two', TRUE);

31、如何在CodeIgniter模型中打印SQL语句?

$this> db> insertid();

32、简述什么是CodeIgniter安全方法?

CodeIgniter安全方法有助于创建安全的应用程序并处理输入数据。方法如下:

  • XSS过滤
  • CSRF(跨站伪造)

33、XSS安全参数是什么?

XSS代表跨站点脚本。 Codeigniter包含一个跨站点脚本黑客防范过滤器。 XSS过滤器的目标方法是触发JavaScript或其他类型的可疑代码。如果检测到任何东西, 它将数据转换为字符实体

34、如何防止CodeIgniter进入CSRF?
我们可以通过多种方式来防止CodeIgniter进入CSRF。最常用的方法是使用网站每个页面中的隐藏字段。隐藏的字段存储在用户的会话中。每个HTTP请求都会更改该字段。可以在对网站的每个请求中检测到用户。始终将隐藏值与会话中保存的值进行比较。如果相同, 则请求有效。

35、如何启用CSRF?
你可以通过编辑config.php文件并将其设置为来启用保护
要启用CSRF, 请在application / config / config.php文件中的FALSE中使以下语句为TRUE。

$config['csrf_protection'] = TRUE;

36、CodeIgniter中的CSRF攻击是什么?
CSRF攻击迫使登录的受害者的浏览器将伪造的HTTP请求(包括受害者的会话cookie和其他身份验证信息)发送到Web应用程序。
例如, 假设你有一个带有表单的网站。攻击者可以在其站点上创建伪造表单。该表格可能包含隐藏的输入和恶意数据。该表格不会发送到攻击者的网站, 实际上, 它是到达你的网站的。考虑到该表格是真实的, 你的网站将对其进行处理。
现在, 假设攻击者的表单指向你网站中的删除表单。如果用户登录并重定向到攻击者的站点, 然后执行搜索, 则该用户的帐户将被删除, 而他不知道。那就是CSRF攻击。

37、CSRF攻击中的令牌方法是什么?
为了防止CSRF, 我们需要同时连接HTTP请求, 表单请求和表单提交。有几种方法可以执行此操作, 但是在CodeIgniter中使用了隐藏字段, 称为CSRF令牌。 CSRF令牌是随每个发送的HTTP请求而变化的随机值

  • 21
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值