【问题标题】:Use Sanitize::clean without Database connection at CakePHP 2.3在 CakePHP 2.3 中使用没有数据库连接的 Sanitize::clean
【发布时间】:2013-04-26 10:01:05
【问题描述】:

我正在使用 Oracle 数据库和 CakePHP 2.3。 由于 CakePHP 不支持 Oracle(没有驱动程序),我在模型中使用 Oracle 程序或 php OCI8 函数。

因此,在 CakePHP 框架看来,我正在使用 CakePHP,但没有任何有效的数据库链接。

我正在尝试使用Sanitize::clean 方法在将评论保存到数据库之前对其进行清理,但我遇到了麻烦,因为它似乎在数据库中查找其任务。

这是产生的错误:

数据库连接“Mysql”丢失,或无法创建。

这就是我尝试对其进行消毒的方式:

$comment = Sanitize::clean($this->request->data['comment']);

如果我这样做,效果会非常好:

$comment = $this->request->data['comment'];

在 CakePHP 2.3 中是否可以在没有任何配置数据库的情况下以某种方式使用 Sanitize::clean

谢谢

【问题讨论】:

  • 您在尝试使用它时遇到了什么错误?另外请在使用时发布您的实际代码。
  • 我已经更新了我的问题。虽然我的代码不太相关:)
  • 显示同样的错误。
  • “清理评论”到底是什么意思?您是否尝试使用 Sanitize::clean 进行转义,即防止 SQL 注入?
  • 或防止 HTML 或 Javascript 注入。

标签: cakephp cakephp-2.0 cakephp-2.3


【解决方案1】:

函数 Sanitize::clean() 需要 2 个参数,默认情况下,当您不提供第二个参数时,CakePHP 使用其默认值并尝试使用“默认”连接连接到数据库。快速浏览一下库中的 Sanitize Class 后,似乎是需要数据库连接的“转义”选项。默认情况下调用它以使字符串 SQL 安全。

因此,在您的情况下,由于您不需要 SQL 连接,因此此请求应该可以解决问题:

$comment = Sanitize::clean($this->request->data['comment'], array('escape' => false);

Check the CookBook for more information on the Sanitize class.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    相关资源
    最近更新 更多