我正在构建CMS,而我正在尝试制作版本控制系统。
每次用户向现有网页发布更新时,我都希望“版本控制”表保留已编辑哪些字段的事件日志...
为了做到这一点,我运行了一堆循环来检查用户刚刚填写的表单内容是否与他们点击提交之前网站上的内容不同...
因此,在我做任何更新之前,我有以下代码(如果格式是歪斜道歉):
$sql = "select * from pages where ID =" .$_POST[id];
$rs = odbc_exec ($db, $sql);
$contents_original = odbc_result($rs,"content");
$title_original = odbc_result($rs,"title");
$pageorder_original = odbc_result($rs,"pageorder");
$parent_original = odbc_result($rs,"parent");
$footer_original = odbc_result($rs,"footer");
$updated_content = trim(stripslashes(strtolower(htmlentities($_POST['content']))));
$original = trim(strtolower($contents_original));
if ($updated_content == $original) {
$a = 'n';
} else {
$a = '<p>Contents changed.';
}
//来自变量$ b - $ e ... then:
$update = "$a $b $c $d $e";
然后是更新例程(所有这些都工作正常和花花公子),并且在版本更新结束时,我将$ update的内容插入到'events'列中的SQL中(这也有效)好的)
然而!假设用户使用原始页面内容加载表单并单击提交...如果没有更改为表单,则$ a will ='',因此,不应将任何内容输入到“events”列中。除了它不断输入'内容已更改',事实上,对每个字符串(例如标题字段,页脚字段等)都这样做!奇怪的是有2个整数输入,它们被事件菜单记录得很好。
如果我打印出strlen(stripslashes(strtolower(htmlentities($ _ POST ['content']))))和strlen(strtolower($ contents_original)),它会显示长度不同......
代码或数据库长度都没有引起这种抑制。
输出来自: 的stripslashes(用strtolower(stripcslashes($ thenewcontent)))
你好,来自章鱼!
欢迎来到乔纳森米。爱德华兹的平面设计页面。无论您需要设计什么 - 商业网站,乐队徽标,您的名字 - 我都有能力为您提供创意和专业的产品。
点击下面的缩略图进行快速浏览:
安排报价,或者如果您只想谈谈一个想法,请给我发电子邮件:联系[at] angry-octopus.co.uk或致电(0789)694-3379
输出来自 的stripslashes(用strtolower(html_entity_decode($ contents_original)))
你好,来自章鱼!
欢迎来到乔纳森米。爱德华兹的平面设计页面。无论您需要设计什么 - 商业网站,乐队徽标,您的名字 - 我都有能力为您提供创意和专业的产品。
点击下面的缩略图进行快速浏览:
安排报价,或者如果您只想谈谈一个想法,请给我发电子邮件:联系[at] angry-octopus.co.uk或致电(0789)694-3379
^^^^^^^^^^^^^^ 以上所有复制/粘贴在NOTEPAD .TXT。
答案 0 :(得分:0)
如果您致电htmlentities()
,由于字符转换,字符串可能会更长。或更短,因为您还使用stripslashes()
。 (豪尔赫斯)
答案 1 :(得分:0)
是数据库中的数据多字节,
如果数据是unicode(多字节),普通的strlen函数不能正常工作,因为它们会将字符串计为单字节
您可以尝试使用该功能:
mb_strlen (strtolower($contents_original)) )