Ckeditor只提交部分内容

时间:2010-02-03 15:00:25

标签: php ajax ckeditor

我正在使用ajax来收集要提交的ckeditor数据。问题只是第一个撇号提交到数据库之前的内容。我能做错什么?

编辑:

$date = strtotime($formData['date']);
$article=mysql_real_escape_string($formData['article'],$DBconnect);

$DBconnect=mysql_connect($dbVals['host'],$dbVals['user'],$dbVals['pass']);

mysql_select_db($dbVals['db'], $DBconnect);
$SQLstring="INSERT INTO PressRelease (ip, tym, title, date, article) VALUES('${_SERVER['REMOTE_ADDR']}', ".time().",'${formData['title']}', '$date', '$article')";

我是相当新的,所以如果还有什么需要看到的,以便让我知道。

3 个答案:

答案 0 :(得分:2)

在将文本数据插入数据库之前,您似乎没有转义文本数据。在将数据传递给SQL查询之前,请对数据使用此函数:

http://www.php.net/manual/en/function.mysql-real-escape-string.php

编辑:抱歉,假设您使用的是MySQL。

答案 1 :(得分:1)

与Mark建议的方法不同,更复杂且可论证的更好的方法是使用Parameterized Statements

借用维基百科的一个例子:

<?php
$db = new mysqli("localhost", "user", "pass", "database");
$stmt = $db -> prepare("SELECT priv FROM testUsers WHERE username=? AND password=?");
$stmt -> bind_param("ss", $user, $pass);
$stmt -> execute();
?>

它使得逃逸到MySQL驱动程序,严重降低了SQL注入的机会以及偶然的双重逃逸等事情。

请注意,使用old MySQL functions无法做到这一点。您需要Improved MySQLI函数/对象,或类似PDO

答案 2 :(得分:1)

如果我理解正确的情况如下:

  • 你有一个由CKeditor“接管”的文本区域
  • 您正在使用Javascript
  • 阅读该textarea的内容
  • 您正在使用AJAX
  • 将收集的内容发送到服务器

如果你警告()Javascript从textarea获取的内容,你可以看到第2步是否成功。如果没有,请发布您的Javascript。

如果第2步是正确的,那么服务器端可能存在问题,转储数据库查询以查看它。

<强>更新 确保您在开发时打开所有错误和通知。如果你正在做一些你不能轻易“看到”的东西,比如AJAX,请务必留意服务器的错误日志。

在您的代码示例第2行中,您使用$ DBconnect,然后在第4行中定义它是什么。正如您在the PHP.net entry for mysql_real_escape_string中看到的,如果函数无法找到与数据库的连接,则函数会生成错误并返回FALSE。 FALSE被放入您的数据库,这就是您的数据库。

我给你的建议是:努力调试。测试所有假设,在每一步测试变量的值,检查它们是否具有您期望的值。使用var_dump(),print_r(),echo和die()。或者如果你想要更高级的东西,可以使用调试器(我没有)。