Textarea数据有时不会通过复制和粘贴

时间:2017-09-11 09:22:01

标签: php mysql textarea

我一直有一个很难确定的问题,所以我想我会问社区有关它的问题。这个问题很难描述,因为奇怪的用户抱怨我无法在我的生活中重现这种情况,但它在足够多的用户中始终存在,我知道这是真实的。

基本上,我有一个用户可以发布广告的网站,有一个文本区域,他们可以放置最多3000个字符的文本,然后发布到数据库。文本在jquery提交时检查字符长度,并且php帖子在处理任何其他内容之前确认了这一点。我不使用mysqli_real_escape_string,因为它弄乱了用户帖子并让他们不高兴,所以我用这个函数清理数据:

`function dataSecure($data){
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    $data = strip_tags($data);
    $data = addslashes($data);
    return $data;
}`

在将预准备语句作为文本插入mysql数据库之前,utf8-unicode-ci,默认为NULL。该函数可能看起来有点过分,但它阻止了我能够想出的任何类型的SQL注入。如果脚本确定stmt已成功执行,则从用户的帐户中扣除,如果不是,则返回false并允许用户编辑详细信息。

注意:该脚本适用于所有帖子的95%,语句准备正确等,并且不会在此处发布,因为脚本不是问题。当某些用户尝试将其广告从word文档或电子邮件复制并粘贴到文本区域时,就会出现此问题。在这种情况下,执行stmt并从用户的帐户中扣除资金,但实际上没有数据插入到数据库中。我已尽力重现此错误(使用MSword文档,从转发的电子邮件中复制,添加奇怪的字符,不同的浏览器,使用UFT8_encode()来防止错误等)但是它不起作用。其他人抱怨复制粘贴的textareas没有插入,但似乎仍未解决。

我最好的选择是,textarea中的某些内容并不是与DB一起讨价还价,所以我希望有经验的人可以帮助解决问题所在。

0 个答案:

没有答案