我使用FCKEditor的使用CakePHP,当我保存了编辑器发送的数据我想对数据运行用htmlspecialchars()和mysql_real_escape_string()函数来清洁它之前,我将它存储在我的数据库。问题是,我真的不知道从哪里CakePHP的框架内做到这一点。我试图在这样的控制器:

function add() 
{
   if (!empty($this->data)) 
   {
      if ($this->Article->save(mysql_real_escape_string(htmlspecialchars($this->data)))) 
      {
         $this->Session->setFlash('Your article has been saved.');
     $this->redirect(array('action' => 'index'));
      }

   }
}

然而这 - $>数据是一个数组,这些功能期望字符串,以便将无法工作。难道我做模型的验证阵列?我不知道。此外,让我知道,如果运行的htmlspecialchars()mysql_real_escape_string内()是不是一个好的做法。

有帮助吗?

解决方案

不要使用htmlspecialchars()保存的数据,使用它时,你的输出的数据为HTML。如果你需要看看在一些方面比HTML?

以外的数据

此外,我不是一个蛋糕的,但是如果你需要为你保存数据或者应用mysql_real_escape_string()我会感到惊讶。数据库访问层应该保护您免受SQL注入,并通过做手工你会最终存储双转义字符串。

其他提示

在短期和简单的答案是 - 如果数据库访问已经被抽象化了,没有必要让你在所有调用这些函数。

需要的地方去的地方是,如果你从字符串位建立实际的SQL。你不应该这样做,无论如何,但那是另一回事了。

底线是 - 框架将做正确的事,不干扰

编辑:正如比尔Karwin指出 - htmlspecialchars()是完全错误的部门此处

如果您正在构建使用CakePHP自己的SQL字符串,然后CakePHP提供了逃生功能:

escape(string $string, string $connection)

http://book.cakephp.org/view/1186/escape

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top