【发布时间】:2019-03-04 20:41:28
【问题描述】:
作为构建内容管理应用程序的一部分,我遇到了无法调试的问题:
我在一个由富文本编辑器修改的表单中创建了一个 textarea 字段。我尝试了一些编辑器:TinyMCE、SummerNote 和其他一些编辑器,两次都得到了相同的结果。
在 90% 的情况下,数据提交正常。在 10% 的情况下,我需要测试一大块文本 + 格式 + 图像,当我提交表单时,它会执行与提交时相同的所有操作,但没有发生实际的数据库写入,什么都没有记录或保存。
例如,我可能会复制/粘贴此页面的主要内容:https://knowledge.hubspot.com/articles/kcs_article/cms-blog/create-and-publish-a-blog-post 作为用户可能输入的 lorem ipsum 的“错误”示例,并且不会保存。但是,如果我只粘贴第一步(从“创建新博客文章”到第一张图片的正下方),它可以很好地保存它。极长的纯文本保存良好。
数据已正确清理(我认为):
$itemname = $_POST['itemname'];
$itemcomment = $_POST['textarea_content'];
$query = "INSERT INTO `table`.`items` (`itemname`, `itemcomment`) VALUES ('$itemname', '$itemcomment');";
mysql_query($query);
数据作为longtext字段编码utm8mb4_bin保存在“itemcomment”下的数据库中。
有时有效,有时无效。
我没有找到任何错误日志。整个post 似乎在某些输入下消失得无影无踪。
甚至不知道从哪里开始调试或问题可能是什么。也许我引入的一些粗略格式没有正确清理?
【问题讨论】:
-
我建议更多的包含问题而不是 mysql。
-
第一个错误显示
include(): Failed opening ..... in .../u/index.php on line 61, referer: .../insert_item.php -
@Tuckbros 很好,我想我没有正确阅读。这似乎是一个完全不相关的问题。我删除了那行代码(不同的功能),再次测试,错误没有出现,但上面描述的错误确实出现了。带有“ASDFASDF”的帖子会通过,但长富文本格式不会。日志中没有记录错误。
-
不推荐使用
mysql_query,您可以尝试在变量上使用mysql_real_escape_string(不推荐使用mysql_query)来保护您的查询。它可以防止sql注入(可能富文本的某些字符对sql不安全。 -
而且您似乎可以在编辑器中嵌入一些图片等,您应该考虑在数据库中使用文本以外的其他内容,或者使用
base64_encode对数据进行编码,但您需要解码它们以备后用。
标签: php mysql textarea form-submit wysiwyg