我正在尝试设置一个XAMPP apache,在其上创建一个脚本,一旦调用它,写入文件:
这似乎是一件小事,但看起来我无法通过谷歌找到解决方案...... 非常感谢帮助,提前谢谢!
<?php
$request = "";
//printing headers
foreach (getallheaders() as $name => $value) {
$request.= "$name: $value\n";
}
//printing body.. this part does not work any of it...
foreach ($_POST as $name => $value) {
$request.= "$name: $value\n";
}
//$request.="++++++++++++++++++++++\n"
foreach ($_FILES as $name => $value) {
$request.= "$name: $value\n";
//$request.="++++++++++++++++++++++\n"
foreach ($value as $name2 => $value2) {
$request.= "$name2: $value2\n";
//$request.="++++++++++++++++++++++\n"
}
}
$request.=$_FILES['document.xml']['D:\Software\xampp\tmp\phpA521.tmp'];
$request.=@file_get_contents('php://input');
file_put_contents('result/'.date('Y-m-d H_i_s').'.log',$request);
?>
答案 0 :(得分:0)
仅为特定请求类型填充$_POST
变量。 The docs将$_POST
描述为:
使用 application / x-www-form-urlencoded 或 multipart / form-data 时,通过HTTP POST方法传递给当前脚本的关联变量数组请求中的HTTP Content-Type。
在您的情况下,Content-Type是不同的,应该/将被指定为:
Content-Type: application/soap+xml;
对$_FILES
变量有类似的限制。 The docs州:
注意:强>
确保您的文件上传表单具有 enctype =“multipart / form-data”属性,否则文件上传将无效。全局
$_FILES
将包含所有上传的文件信息。
要访问发布的数据,请按照documentation on I/O streams:
中的说明进行操作
php://input
是一个只读流,允许您从请求正文中读取原始数据。对于POST请求,最好使用php://input
所以你会这样做:
$postedData = file_get_contents('php://input');
然后您可以将其解析为XML:
$xmlData = simplexml_load_string(trim($postedData));