检测传入的PHP帖子,保存文件

时间:2016-04-29 14:24:28

标签: c# php post file-transfer

目前有一台服务器设置为将zlib文件发布到另一台服务器:(这是C#代码)

HttpWebRequest req = (HttpWebRequest)WebRequest.Create("https://server-ip-here/postlistener?filename=filename.zlib");
req.UseNagleAlgorithm = true;
req.AllowWriteStreamBuffering = true;
req.Method = "POST";
req.Accept = "application/xml";
req.ServicePoint.Expect100Continue = false;
System.Net.ServicePointManager.CheckCertificateRevocationList = false;
req.Proxy = new WebProxy();

filename = "filename.dat";
byte[] postData = File.ReadAllBytes(filename);
Stream stream = req.GetRequestStream();
stream.Write(postData, 0, postData.Length);
stream.Flush();
stream.Close();

req.BeginGetResponse(new AsyncCallback(responseHandler), this);

需要在不同的服务器上写一些php,以便当这个特定的IP帖子发给我时(也就是服务器192.某事或其他帖子到我的服务器IP)我需要能够

  • a)检测正在进行POST
  • b)通过列入白名单的IP
  • 进行检查
  • c)下载POST数据(应为二进制),并将其保存为帖子中的名称(需要接受URL中的文件名:.www.blah.com/upload?filename = somefile_1234_12389126496129684790.zlib)< / LI>

然而,对于PHP来说这是新的,这是我迄今为止的研究告诉我的:

  • a)使用此代码查看请求是否为帖子

    if '($_SERVER['REQUEST_METHOD'] === 'POST') { // … }

  • b)使用:$_SERVER['HTTP_REFERER']

  • c)没有真正的想法。

也不完全确定如何将这些部分串在一起。有什么想法我可以如何监听从该IP发送的POST,然后下载正在发布的文件?

还真的不确定如何设置我的php页面能够做到:

/postlistener?filename=filename.zlib

我相信postlistener部分是我的页面,不知何故该页面也应该得到一个文件? TH =他是我的理解,已经为公司的其他人接管了这个项目,当然没有文件可以使用它。任何帮助都会有很大的帮助,谢谢。

1 个答案:

答案 0 :(得分:2)

这将侦听任何POST数据,然后将post变量名称放入数组中。

    <?

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
     if($_SERVER['REMOTE_ADDR'] == '*IPADDRESS*') {
          $posts = array();
          foreach ($_POST as $key => $value){
               echo "{$key} = {$value}\r\n";
               array_push($posts,$key);
          }
      }
}

print_r($posts);
?>

之后,您可以遍历$posts数组并下载所有内容。