destoon 4.0 表单提交流程
碰到一个问题,无论前端用户修改企业信息时,无论填写什么内容,post提交也有内容,可后台就是接收不到,提示内容不能低于5个字符,打印时显示内容为空。
1.表单中 form action=“edit.php”
2.edit.php中的内容
<?php
require 'config.inc.php';
require '../common.inc.php';
require DT_ROOT.'/module/'.$module.'/edit.inc.php';
?>
// 你没看错,就这么点,这个edit.php没别的内容了。
3.找到 edit.inc.php;
<?php
defined('IN_DESTOON') or exit('Access Denied');
login();
require DT_ROOT.'/module/'.$module.'/common.inc.php';
require MD_ROOT.'/member.class.php';
require DT_ROOT.'/include/post.func.php';
$do = new member;
$do->userid = $_userid;
$user = $do->get_one();
$CATEGORY = cache_read('category-4.php');
$MFD = cache_read('fields-member.php');
$CFD = cache_read('fields-company.php');
isset($post_fields) or $post_fields = array();
if($MFD || $CFD) require DT_ROOT.'/include/fields.func.php';
$tab = isset($tab) ? intval($tab) : 0;
if($submit) {
//下面的就不粘出来了,没用了。这里的submit里就已经丢失内容了
不按顺序查找,是不对的。这个坑了我一天时间。切记。
实际问题出现在 require DT_ROOT.’/module/’.$module.’/common.inc.php’;这个里面
4. common.inc.php 中发现问题
if($submit) {
check_post() or dalert($L['bad_data']);//safe
$BANWORD = cache_read('banword.php');
if($BANWORD && isset($post)) {
$keys = array('title', 'tag', 'introduce', 'content');
foreach($keys as $v) {
if(isset($post[$v])) $post[$v] = banword($BANWORD, $post[$v]);
}
}
}
原来,这里有个过滤敏感词,果断 banword 这先注释掉。果然,提交的能接收到了。