有朋友在DIV修改ECSHOP时,有时会需要在数据库中加入一些字段,可能在存储过程中会遇到乱码问题,要找出这个问题的原因,还真是要花些时间, 因为一开始都会想到是编码的原因, 方向错了, 自然是越走越远了,
问题出在ECSHOP在把资料放进数据库时, 经过了htmlentities的处理, 防止javascriptr的恶意输入,
文件位于/includes/lib_passport.php第165行:
原代码: $other[$key] = htmlentities($val); //防止用户输入javascript代码
只要把htmlentities换成htmlspecialchars就OK 了
$other[$key] = htmlspecialchars($val); //防止用户输入javascript代码
另一个文件位于/includes/lib_transaction.php第85行:
原代码: $profile['other'][$key] = htmlentities($val); //防止用户输入javascript代码
修改后的代码为:
$profile['other'][$key] = htmlspecialchars($val); //防止用户输入javascript代码
ECSHOP在其他场合下是用htmlspecialchars的, 这两个函数功能基本一样, 只是对中文的处理结果不同.