2016-04-29 11 views
2

Zeit speichern es einen Server auf einen anderen Server zlib-Dateien schreiben aufgebaut ist: (Hier ist der C# -Code für die)eingehende PHP Post erkennen, Datei

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); 

Brauchen Sie PHP auf einem anderen Server zu schreiben so dass, wenn diese bestimmte IP-Beiträge Sachen zu mir (auch bekannt als wenn Server 192. etwas oder andere Beiträge zu meinem Server IP) muss ich in der Lage sein

  • a) erkennen, dass ein POST
  • b gemacht wird) Überprüfen Sie, ob es sich um eine Whitelist IP
  • handelt
  • c) Laden Sie die POST - Daten (die binär sein sollen) herunter und speichern Sie sie wie auch immer ihr Name in der Post ist (Dateiname in URL akzeptieren:. www.blah.com/upload?filename=somefile_1234_12389126496129684790.zlib)

sind jedoch neue ish PHP das ist, was meine Forschung so weit mir gesagt hat:

  • a) diesen Code verwenden, um sehen, ob die Anforderung eine Post

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

  • b) verwenden: $_SERVER['HTTP_REFERER']

  • c) Keine wirkliche Idee.

Auch nicht ganz sicher, wie man diese Teile zusammen stringt. Irgendwelche Ideen, wie ich für POSTs hören kann, die von dieser IP gesendet werden, und dann die Datei herunterladen, die gepostet wird?

auch wirklich nicht sicher, wie meine PHP-Seite einrichten zu können, tun:

/postlistener?filename=filename.zlib

Ich glaube, die postlistener Teil meiner Seite ist, und irgendwie, dass Seite soll auch eine Datei erhalten ? TH = sein ist mein Verständnis, habe dieses Projekt für jemand anderen in der Firma übernommen, und natürlich gibt es keine Dokumentation dazu. Jede Hilfe wäre eine große Hilfe, danke.

+0

Um zu erkennen, ob es einen POST gibt, dann laden Sie alle Daten im Post abhängig vom Namen des Posts herunter. – Lain

+0

Mist Ich habe deinen Kommentar bearbeitet anstatt zu antworten ... – Lain

+0

Nein, ich habe ihn gelöscht, sorry. – GrumpyCrouton

Antwort

2

Dies wird auf alle POST-Daten warten und dann den Post-Variablennamen in ein Array eingeben.

<? 

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); 
?> 

Danach können Sie die $posts Array durchlaufen und alle Dinge herunterladen.

+0

um dies zu ändern, so dass es nur funktioniert, wenn der Beitrag von einer bestimmten IP ist, würde ich nur die if-Anweisung ändern, um auch zu prüfen, ob der http-Referer korrekt ist? – Lain

+0

@lain Blick auf meine Bearbeitung. – GrumpyCrouton

+0

Okay, danke, wir werden ein paar Nachforschungen zum Herunterladen anstellen. Ich nehme an, ich würde die zweite Schleife direkt nach dem ersten herunterladen, um zu beenden? – Lain