我在IIS中的php7服务器在Windows2012上
当我用ajax发布文本数据(代码中的名称fgx ) 12950长度及以下时,它是成功的,数据发布到php表单中。
当我尝试12957+长度数据发布时,它的成功来自于ajax,但是,没有任何数据发布了php表单。
当我在php中检查posted数据长度时,它显示了未定义的数据长度。
AJAX邮政编码
$.ajax({
url: 'index.php',
type: 'POST',
data: {
ipdata: fgx
},
success: function(msg) {
$('#info').empty();
$('#info').append(`
<div class="alert alert-success alert-dismissible fade show" role="alert" id="alarma">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<strong>Datalar post success.<br><br>` + msg + `</strong>
</div>`);
}
});
PHP邮编
if( isset($_POST['ipdata'])){
$incdata=$_POST['ipdata'];
echo $incdata;
}
我试过了;
ajax post数据类型= text
ajax post缓存= false
ajax proccessdata = false
我检查了php post最大值,上传最大值为128 m。
发布于 2020-10-14 10:58:10
I解决了将php从7.4.6升级到7.4.11的问题
发布于 2020-10-09 22:00:30
实际上,我最近在生产中遇到了这个问题。您希望在post max size
中增加php.ini变量--我也遇到了一个类似的问题:128 in不够,即使只有30k字符。
您还应该确保增加您要发布的PHP脚本的内存限制,因为您可能也会碰到上限,这也可能是问题所在。根据您在该脚本中所做的工作,您还可能希望将时间限制设置为0(或大量的)。
发布于 2020-10-09 22:27:21
为了缩小搜索范围,我将检查流量(通过嗅探流量或检查浏览器的调试工具)。
如果数据确实被发送,那么我会尝试以其他方式检查POST数据服务器端:
$data = file_get_contents('php://input');
或者,如果有,
$data = stream_get_contents(STDIN);
如果您正在CGI上运行表单编码的数据,那么这将是一个问题,因为我认为这两个访问都不可用(但是CONTENT_LENGTH envvar应该存在)。您可能会安装PECL扩展,从而使http_get_request_body()
可用,或者使用OOP
$req = new http\Env\Request();
$data = $req->getBody();
这应该会告诉你数据消失的地方。但是,让它重新出现可能很棘手,除非您可以更改服务器配置。
我尝试的另一件事是发送两个变量,第一个保持第二个变量的长度:
{
fgxc : fgx.length,
ipdata: fgx
}
然后发送一个固定的字符串-一个A的序列,比方说-代替fgx。我有一个非常特殊的字符串序列被编辑出流,这是因为一个配置错误的防火墙把它误认为是脚本注入攻击。
如果12570“A”的pass和12570字节的fgx没有,那么这与内容有关--您可以通过发送用base64编码的btoa()
来绕过它。然后在PHP代码中运行base64_decode
,您就设置好了。
https://stackoverflow.com/questions/64287337
复制相似问题