CModel 与 CFormModel 与 CActiveRecord

2023-12-24

我正在 yii 中构建一个数据库密集型应用程序。所以性能和安全性自然是一个值得关注的问题。除此之外,表单验证也是一个主要标准。为了安全起见,我计划对所有 Sql 查询使用参数绑定。对于验证,我想使用 Yii 提供的验证器,而不是推出我自己的 .我知道 CActiveRecord 的性能会受到影响。因此,我计划为所有表创建 Cmodel 类,在这些各自的模型中定义验证规则,并定义执行 SQL 查询以检索和插入数据的函数。我在网站上的所有数据收集主要是通过表单(大约95%),我应该使用 Cformmodel 吗?我不太明白 Cmodel 和 Cformmodel 之间的区别,使用这两者是否会对性能造成影响。

另外,为了防止 XSS 攻击,我想使用 HTML purify 包装器作为验证规则,因为我几乎到处都读到该包装器的性能很差,即使我使用它作为验证规则,它也会很差吗?即使我正在净化输入,我也应该使用 Chtml::Encode 显示输出文本吗?

我处理数据的粗略计划是:

    $users= new Users() ; //Users is extending CModel , contains validation rules 
    $users=getdata(Yii->app->userid()) ; 
    if(isset('update'))
    {
        if($users->validate())
            {$users->updatedata() ; }
    }

$this->render('users','data'=>$users) 

CFormModel继承自CModel,CModel只是一个通用的Model类,使用CFormModel没有性能差异,如果您不打算使用CActiveRecord,那么它更适合您的应用程序。

对于“执行 sql 查询的函数”,希望您指的是存储过程,否则不会有那么大的性能提升,即使如此,编写自己的 SQL 查询仅用于插入和检索单个模型也没有多大帮助。我的建议是你稍后关心性能。一旦你确实有需要改进的地方。

净化输入与编码不同,通过 HTML 净化,您可以消除有害的 html,以防止 XSS 或其他您不想允许的标签。但例如,字符串仍可以包含 ( ' )。 CHtml::encode 的作用是生成 HTML 等效项,以便您获得 html 实体。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CModel 与 CFormModel 与 CActiveRecord 的相关文章

  • 使用 Ajax 和 PHP 上传图像

    我想将图像上传到我的服务器 并控制 HTML 代码中的 PHP 回显 为此 我想使用 jQuery Ajax 但我不知道如何使用 Ajax 将图像发送到 PHP 这是一个大学项目 所以我不能使用任何类型的插件 我的实际代码 HTML
  • Symfony 生产日志

    在 Symfony 3 中 我是否可以在不打开调试模式的情况下将所有错误写入生产日志 错误将包括 http 500 错误或应用程序错误或 php 错误 这些错误由于生产时错误标志设置为 false 而被静音 当前生产的日志配置是 monol
  • PHP 中的 XPath 删除 HTML 标签

    我在 PHP 中使用 XPath 来检索 HTML 文档的一部分 假设我的 HTML 文档如下所示 div a href some link address com Hello a p Some text here p div div p
  • 未知的 MySQL 服务器主机 (PHP)

    当尝试连接到我的数据库服务器时 我遇到了以下问题未知主机 Warning mysqli mysqli mysqli mysqli HY000 2005 Unknown MySQL server host xxxxxxxxxxxxx port
  • 数据库字段中的空白不会被trim()删除

    我在 MySQL 的文本字段的段落开头有一些空格 Using trim var text field 在 PHP 中或TRIM text field MySQL 中的语句绝对不执行任何操作 这个空白可能是什么以及如何通过代码删除它 如果我进
  • 选择 MYSQL 行,但将行转换为列,将列转换为行

    我想选择数据库中的所有行 但我希望它们按相反的顺序排列 意思是 我想使用第一列数据作为新实体 并将实体作为第一列 我想你明白我的意思 这是一个例子 id name marks 1 Ram 45 2 Shyam 87 to id 1 2 Na
  • 将 PHP 错误存储在日志文件中

    我想将 php 生成的任何错误和警告存储在日志文件中 但是still也以正常方式显示它们 回显 Thanks 您可以定义自己的函数并描述如何处理错误 http www php net manual en function set error
  • 使用类型映射选项的 PHP SoapClient 示例

    我在 PHP 的 SoapClient 中的命名空间使用方面遇到了一个小问题 从文档中我相信构造函数的类型映射选项将解决我的问题 http php net manual en soapclient soapclient php http p
  • Magento:查找包含产品的订单

    Magento 有没有办法找到包含给定产品的所有订单 如果可以通过管理面板来完成就更好了 报告 gt 产品 gt 订购的产品向我提供了产品销售的日期以及包含该产品的订单数量 但我需要知道哪些特定订单包含该产品 谢谢你 这个问题我在另一个问题
  • 通过 Composer 安装 Codeception 到 Yii2

    我在将 Codeception 安装到 Yii2 项目时遇到问题 1 下载composer到Yii2项目中 curl sS https getcomposer org installer php 2 尝试安装Codeception php
  • 在 PHP 页面中嵌入 svn 修订号的简单方法?

    注意到这个页面的右下角有 SVN 修订 ID 了吗 我假设这是动态的 我很乐意将其添加到我的一些网站中 就像源代码中的注释一样 以确保代码推送顺利进行 注意 您还可以假设相关站点的工作目录是相关存储库的 svn checkout Edit
  • Laravel - JWT Auth 无法从请求中解析令牌

    我在中间件中添加了以下代码以进行用户身份验证JWT Auth https github com tymondesigns jwt auth 它适用于中间件处理的所有路由 public function handle request Clos
  • 两个 mysql_fetch_array 语句

    是否有任何原因导致我无法在一个 while 循环中包含两个处理两个不同 mysql 查询结果的 mysql fetch array 语句 原因是我有两个来自 mysql 数据库的查询结果 每个结果包含两列 如下所示 Query 1 Date
  • PHP 性能有多好? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 这是我最近看到的一篇文章的后续内容 该文章表明 PHP 性能很差 PHP 始终是瓶颈 我的服务器群 让我向您展示 PHP 整体性能 http t
  • 设置基于 PHP 定时器的函数

    我有一个 php 文件test php 我想要echo or print5 秒后 即在浏览器调用 加载或打开 php 文件后不久 成功 顺便说一句 有时我可能想在特定的时间间隔后执行 初始化某些函数 如何使用 php 执行面向时间的任务 例
  • ajax - 检查用户名是否存在+如果存在则返回消息

    我试图检查用户想要的用户名是否已被使用 而无需发送表单 基本上是用户名字段的模糊 我遇到了一些麻烦 有几个问题 我有我的输入字段加上js
  • Symfony2 - Doctrine - 更新后没有更改集

    因此 当实体的某个值发生更改时 我会发送电子邮件 我只想在更新后发送电子邮件 以防更新因任何原因失败 所以在更新前我可以这样做 public function preUpdate LifecycleEventArgs args if arg
  • PHP cURL 代理带标头?

    我正在制作一个 PHP 图像代理脚本 我需要它不仅能够回显其请求的图像的内容 而且还能够以相同的方式重现图像请求的标头 我见过一个 另一个 但没有同时看到过 这些 cURL 选项让我感到困惑 我该怎么做 抱歉 我不确定你想要什么 这是从图像
  • 如何在 PHP 中验证电子邮件? [复制]

    这个问题在这里已经有答案了 如何使用 php5 验证输入值是有效的电子邮件地址 现在我正在使用这段代码 function isValidEmail email pattern a z0 9 a z0 9 a z0 9 a z0 9 a z
  • 一个模型中的多个表 - Laravel

    我的索引页使用数据库中的 3 个表 索引滑块 索引特征 页脚框 我使用一个控制器 IndexController php 并像这样调用三个模型 public function index return View make index gt

随机推荐

  • 使用 VBScript 的批量 ECHO 命令相当于什么?

    我们目前使用 Windows Batch DOS 命令文件来控制我们的流程 要将消息显示到控制台 我们将使用 ECHO 命令 这些消息将显示在我们的调度程序软件中 该软件以前是 Tivoli 现在是 CA WA Workstation ES
  • 将视频转换为 html5 兼容格式(服务器端)

    我想创建一个网站 播放用户上传的html5视频视频 如何将服务器端的任何视频类型转换为 WebM OGG 或 MP4 FFmpeg 是最好的解决方案吗 到目前为止 这就是我的想法 但我宁愿找到一种更简单的方法 是的 ffmpeg 是最好的解
  • MFC DYNAMIC_DOWNCAST 与dynamic_cast

    有什么区别DYNAMIC DOWNCAST来自 MFC 库和标准 C dynamic cast操作员 我可以使用安全吗dynamic cast代替DYNAMIC DOWNCAST对于 MFC 对象 当我的课程包含DECLARE DYNAMI
  • 有没有办法查看多个线程的完整堆栈跟踪?

    C 多线程编程中 when方法A 调用方法B 在一个新线程中 例如通过使用这样的东西 Task A I want B to run in parallel without A waiting for it Task Factory Star
  • 在Spark中计算RDD中的记录是昂贵的任务吗?

    在 Hadoop 中 当我使用输入格式读取器时 作业级别的日志会报告读取了多少条记录 它还显示字节数等 在 Spark 中 当我使用相同的输入格式读取器时 我得不到这些指标 所以我想我会使用inputformat reader来填充rdd
  • TinyMCE:如果 URL 不存在,如何在 URL 前面添加“http://”

    如果在 TinyMCE 中使用插入链接添加 URL 时不存在 是否可以在 URL 前面添加 http 为此 您需要复制tinymce插入链接插件 重命名它 向其中添加必要的代码 http 添加 并将其用作您自己的插件 EDIT 好的 这是一
  • 由于消息发送到已释放的实例而导致加载 UITableView 崩溃

    我的测试应用程序加载 UITableView 并导致崩溃 1421 12503 NSArrayM class message sent to deallocated instance 0x10ae83e0 崩溃时进程停止在 main 方法处
  • Eclipse 中的 UI 设计器无法预览自定义视图

    背景 我一直在创建许多类型的自定义视图 通常我会在 ADT 的 UI 设计器上很好地显示它们的预览 最近 更新到最新版本的 ADT 22 0 5 v201307292155 757759 后 我看不到任何类型的自定义视图 甚至是最简单的视图
  • 使用 Google Apps 脚本从 Google 云端硬盘托管 Google 网站中的图像的替代方案是什么? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 之前很简单 只需要使用URL即可https googledrive com host https go
  • Cocos2d iPhone非矩形精灵触摸检测

    有一个在精灵中包含三角形图形的项目 我将这些精灵排列在网格中 以便它们的矩形全部重叠 当精灵被触摸时 它们的 z 顺序 由我 被更改 以将它们放在 zOrder 的顶部 我使用的是 Cocos 0 8 1 和触摸调度程序方法 我可以进行触摸
  • 在 Android Studio 或 IntelliJ 中将未使用的导入报告为错误

    Android Studio 中是否有任何方法 设置可以将 java 文件中未使用的导入报告为错误 在 Eclipse 中 lint 很容易将此报告为错误 适用于 Android Studio 和 IntelliJ 你可以去File Set
  • iOS 崩溃分析和报告 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 了解 javascript 全局命名空间和闭包

    我正在尝试提高对 javascript 中的全局命名空间的理解 我对以下几件事感到好奇 是否存在一个 GOD 即父 对象 所有对象 因为除了基元之外的所有事物都是对象 都要回答 如果是这样 该对象将是 窗口 吗 为什么在全局范围内使用变量
  • 选择取消按钮时如何重置 DatePicker

    我的应用程序中有一个 datePicker 对话框 当我选择日期时效果很好 但是 如果在对话框中更改日期然后按取消 原始编辑文本将保持不变 但日期选择器仍然具有取消之前的日期 我想确保每次进入日期选择器时 它都会设置 EditText 中的
  • 当键重复时如何使用 Java Stream API 添加 Map 的内部元素

    我有一个清单List
  • 如何从非活动类中检索上下文?

    我已经发现一个答案 https stackoverflow com questions 4177731 android how to call method from another class without passing contex
  • Symfony 2 调试工具栏未显示

    Symfony 调试工具栏不显示 我正在 app dev php 环境中运行该网站 config dev yml 文件包含以下行 web profiler toolbar true intercept redirects false app
  • 使用 jQuery 动态添加/删除输入字段

    我想使用 jquery 构建动态添加 删除表单 它应该看起来像 姓名类型需要吗 示例输入 姓名类型需要吗 托尼管理员选中 复选框 删除 我得到的是添加 删除输入框的示例 它如何转换为我的想法 我必须使用多列表吗 谢谢你的好心帮助 h1 jQ
  • 如何避免用户删除他的会话

    用例 目前 我正在尝试构建一个页面 用户可以在其中对内容进行投票 赞成 反对票 类似于StackExchange网络上的功能 但用户不需要自己注册即可对内容进行投票 所以这将是一种 匿名 投票页面 它是用 Laravel5 构建的 并使用
  • CModel 与 CFormModel 与 CActiveRecord

    我正在 yii 中构建一个数据库密集型应用程序 所以性能和安全性自然是一个值得关注的问题 除此之外 表单验证也是一个主要标准 为了安全起见 我计划对所有 Sql 查询使用参数绑定 对于验证 我想使用 Yii 提供的验证器 而不是推出我自己的