gpt4 book ai didi

PHP 添加字符到 jQuery.AJAX 发布的字符串

转载 作者:行者123 更新时间:2023-12-01 04:55:39 24 4
gpt4 key购买 nike

无法在网上或通过搜索功能找到任何答案,所以我决定发布它:

我有一个表单,与其他表单一样,被发布到 CodeIgniter 内的 AJAX Controller 。以下代码是正在发布的较大表单的一部分。

<tr>
<td><label class="checkbox"><input type="checkbox" name="ef1_active" value="1"></label></td>
<td><input type="text" name="ef1_label" value=""></td>
<td><select name="ef1_clang" class="input-small">'.$optionlist.'</select></td>
<td><label class="checkbox"><input type="checkbox" name="ef1_required" value="1"></label></td>
</tr>
<tr>
<td><label class="checkbox"><input type="checkbox" name="ef2_active" value="1"></label></td>
<td><input type="text" name="ef2_label" value=""></td>
<td><select name="ef2_clang" class="input-small">'.$optionlist.'</select></td>
<td><label class="checkbox"><input type="checkbox" name="ef2_required" value="1"></label></td>
</tr>
<tr>
<td><label class="checkbox"><input type="checkbox" name="ef3_active" value="1"></label></td>
<td><input type="text" name="ef3_label" value=""></td>
<td><select name="ef3_clang" class="input-small">'.$optionlist.'</select></td>
<td><label class="checkbox"><input type="checkbox" name="ef3_required" value="1"></label></td>
</tr>
<tr>
<td><label class="checkbox"><input type="checkbox" name="ef4_active" value="1"></label></td>
<td><input type="text" name="ef4_label" value=""></td>
<td><select name="ef4_clang" class="input-small">'.$optionlist.'</select></td>
<td><label class="checkbox"><input type="checkbox" name="ef4_required" value="1"></label></td>
</tr>

表单正在被序列化,并推送到ajax以使用以下代码保存:

var data = {
content : content,
property : property,
data_type : dataType,
form_id : $('#form_id').val()
};


$.ajax({
type: 'POST',
url: url,
data: data,
dataType: 'json',
success: function (result)
{

if(result.html == 'deleted')
{
window.location.reload();
}
else
{
$('#newForm').html('');
}

}
});

console.logged 时'content'变量的序列化结果:

firstname=1&firstname_required=1&prefix=1&lastname=1&lastname_required=1&homePhone=1&homePhone_required=1&emailAddress=1&emailAddress_required=1&ef1_label=&ef1_clang=Code&ef2_label=&ef2_clang=Code&ef3_label=&ef3_clang=Code&ef4_label=&ef4_clang=Code

但是当我在 PHP 中回显它时,它看起来像这样:

firstname=1&firstname_required=1&prefix=1&lastname=1&lastname_required=1&homePhone=1&homePhone_required=1&emailAddress=1&emailAddress_required=1&ef1;_label=&ef1_clang=Code&ef2;_label=&ef2_clang=Code&ef3;_label=&ef3_clang=Code&ef4;_label=&ef4_clang=Code

注意所有 _label 变量上添加的 ;...尝试重命名变量,将其放置在表单顶部等...没有任何作用; PHP 不断在这些文本字段上添加 ;

甚至将 Controller 简化为:

public function save_form_content()
{
print_r($_POST['content']); exit;
}

有人知道吗?

提前致谢!

最佳答案

这是 CodeIgniter 中的一个已知错误,这是因为您使用的是 xss_clean()$config['global_xss_filtering'] = TRUE;,请参阅 bug report 。更新 CodeIgniter 来修复问题,或者查看 Git 提交,如果无法更新整个 CI,则从提交中应用补丁。

根据一位开发人员的说法:

should be fixed replacing regexp on line #797 in the system/core/Security.php by this one :

$str = preg_replace('#(^&\#?[0-9a-z]{2,})([\x00-\x20])*;?#i', '\\1;\\2', $str);

关于PHP 添加字符到 jQuery.AJAX 发布的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14498487/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com