发布织梦文章的程序 解决部份文章发布不成功的问题
首先,浏览上一章 织梦 PHP 实现织梦发布功能
putDEDE.php 的部份
//JSON 数据
$id = $data[$i][0];
$title = $data[$i][1];
$content = $data[$i][2];
//获取描述
$description = mb_substr(str_replace(array(" "," ","\t","\n","\r"),array("","","","",""),strip_tags($content)),0,250, 'utf-8');
修改为:
//JSON 数据
$id = $data[$i][0];
$title = mysql_real_escape_string($data[$i][1]);
$content = mysql_real_escape_string($data[$i][2]);
//获取描述
$description = mysql_real_escape_string(mb_substr(str_replace(array(" "," ","\t","\n","\r"),array("","","","",""),strip_tags($data[$i][2])),0,250, 'utf-8'));
mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符。防止发送SQL语句失败
还有另一个功能,使用本函数来预防数据库攻击。
参考文章:http://www.w3school.com.cn/php/func_mysql_real_escape_string.asp
补充:mysql_real_escape_string 主要是为了 数据库防注入、以及语句正确性等需要,将读写语句中的字符进行了转换;
但最终写入到数据库中的内容,依旧是你转义前的;所以当你读出来的时候,依旧是原来转义前的内容;
比如,你要在数据库中插入字符串 aaaa"aaaa 但如果写成insert into table values("aaaa"aaaa"); 语句就出错了,使用mysql_real_escape_string就能转义成 aaaa\"aaaa; 最终语句就变成了 insert into table values("aaaa\"aaaa");
但你select * from table 最终得到的内容依旧是 aaaa"aaaa