检测传入PHPpost,保存文件
Detect incoming PHP post, save file
目前有一个服务器设置为 post 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 post 对我有用时(也就是当服务器 192 时。某些东西或其他 post 对我有用服务器IP)我需要能够
- a) 检测到正在制作 POST
- b) 检查是否是白名单 IP
- c) 下载 POST 数据(应该是二进制的)并将其保存为 post 中的任何名称(需要接受 URL 中的文件名:. www.blah.com/upload?文件名=somefile_1234_12389126496129684790.zlib)
然而,作为 PHP 的新手,这是我迄今为止的研究告诉我的:
a) 使用此代码查看请求是否为 post
if '($_SERVER['REQUEST_METHOD'] === 'POST') {
// …
}
b) 使用:$_SERVER['HTTP_REFERER']
c) 没有真正的想法。
也不完全确定如何将这些部分串在一起。关于如何监听从该 IP 发送的 POST,然后下载正在 post 的文件,有什么想法吗?
也真的不确定如何设置我的 php 页面才能做到:
/postlistener?filename=filename.zlib
我相信 postlistener 部分是我的页面,并且该页面也应该以某种方式获取文件? TH=his是我的理解,已经在公司里给其他人接手了这个项目,当然没有文档可以配合。任何帮助都是很大的帮助,谢谢。
这将侦听任何 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
数组并下载所有东西。
目前有一个服务器设置为 post 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 post 对我有用时(也就是当服务器 192 时。某些东西或其他 post 对我有用服务器IP)我需要能够
- a) 检测到正在制作 POST
- b) 检查是否是白名单 IP
- c) 下载 POST 数据(应该是二进制的)并将其保存为 post 中的任何名称(需要接受 URL 中的文件名:. www.blah.com/upload?文件名=somefile_1234_12389126496129684790.zlib)
然而,作为 PHP 的新手,这是我迄今为止的研究告诉我的:
a) 使用此代码查看请求是否为 post
if '($_SERVER['REQUEST_METHOD'] === 'POST') { // … }
b) 使用:
$_SERVER['HTTP_REFERER']
c) 没有真正的想法。
也不完全确定如何将这些部分串在一起。关于如何监听从该 IP 发送的 POST,然后下载正在 post 的文件,有什么想法吗?
也真的不确定如何设置我的 php 页面才能做到:
/postlistener?filename=filename.zlib
我相信 postlistener 部分是我的页面,并且该页面也应该以某种方式获取文件? TH=his是我的理解,已经在公司里给其他人接手了这个项目,当然没有文档可以配合。任何帮助都是很大的帮助,谢谢。
这将侦听任何 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
数组并下载所有东西。