我接受来自TinyMCE的数据。当我从这样的网站复制和粘贴时遇到困难:
http://www.rlslog.net/category/games/pc/
我使用以下函数来防止SQL注入和转义特殊字符,如果我输出插入的文本,则会破坏整个页面。
$title = mysql_real_escape_string($title);
$data = mysql_real_escape_string($data);
$author= mysql_real_escape_string($author);
$data =htmlentities($data);
$title =htmlentities($title);
$author =htmlentities($author);
mysql_query("SET NAMES 'utf8'");
mysql_query("INSERT INTO `easy_db`.`article` (`Title`, `Article`, `Topics`, `author`, `page`, tpage ) VALUES('$title', '$data', '$topic', '$author', '$page','$tpage')") or die(mysql_error());
mysql_close();
输出数据时得到的是我的html文本(不是数据库的输出),如下所示:
כותרת היו×
我在php.ini中删除了magic_quotes_gpc
magic_quotes_gpc
Default Value: Off
Development Value: Off
Production Value: Off
以下是我在phpmyadmin中引用它时看起来的文字:
skidrow%2F&layout=standard&show_faces=false&width=450&action=like&colorscheme=light&height=35\" frameborder=\"0\" scrolling=\"no\"></iframe></p>\r\n<p class=\"comments_link\" style=\"padding-top: 20px; padding-right: 0px; padding-bottom: 10px; padding-left: 0px; line-height: 19px; margin: 0px;\"><a style=\"color:
c02e13; text-decoration: none; padding: 0px; margin: 0px;\" title=\"Comment on Orcs Must Die Fix-SKIDROW\"
href=\"http://www.rlslog.net/orcs-must-die-fix-skidrow/#respond\">Comments(0)</a></p>\r\n</div>\r\n</div>\r\n<div style=\"padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 40px; margin: 0px;\"><iframe style=\"padding: 0px; margin: 0px;\" src=\"http://www.roadcomponentsdb.com/300.htm\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"NO\" width=\"300\" height=\"250\"></iframe></div>\r\n<p id=\"nextlinks\" style=\"padding-top: 20px; padding-right: 20px; padding-bottom: 0px; padding-left: 20px; margin: 0px;\"><strong style=\"padding: 0px; margin: 0px;\">Previous post:</strong> <a style=\"color: #c02e13; text-decoration: none; padding: 0px; margin: 0px;\" href=\"http://www.rlslog.net/musclemag-international-%e2%80%93-december-2011-p2p/\">MuscleMag International – December 2011-P2P</a></p>
问题是它为什么会发生?我该如何预防呢?我是否做得足以阻止sql注入?
答案 0 :(得分:2)
SET NAMES 'utf8'
正在改变您的数据。
看看this MySQL forum link。他对正在发生的事情提供了相当好的描述。简短描述:转换过程混淆了它应该读取字符的内容。