4 Stimmen

Server kann die POST-Daten, die von einem anderen Server per URL-Redirect gesendet werden, nicht erfassen

Kürzlich begann ich mit der Arbeit an einem Payment Gateway (weiter buchstabiert als ' PG ') Prozess für meine Website. Der Prozess beinhaltet das Senden der Daten buchen per Formular an PG Server, indem er auf deren Seite umleitet und eine Antwort von der PG über die Transaktion über POST-Daten gesendet, indem die URL auf unsere Serverseite umgeleitet wird.

Das Problem entsteht hier, da mein Server nicht in der Lage ist, die POST-Daten abzurufen, die von PG Server.

Da ich in PHP kodiere, habe ich versucht, alle Antworten, die von PG con print_r($_POST); und sogar versucht mit print_r($_REQUEST); . Ich habe keinen Datendruck gefunden, außer dem PHPSESSID und ein anderes Datenfeld.

Was die Bestätigung betrifft, so habe ich überprüft, ob die Daten mit dem IE-Addon namens " TamperIE ". Es werden alle POST-Daten angezeigt, die an ihren Server gesendet werden. Aber sie kommen überhaupt nicht auf unserem Server an. Ich habe diesen Prozess auf einem anderen Server ausprobiert: Dort konnte ich die POST-Antwort erhalten, aber nicht mit dem derzeit funktionierenden Server.

Können Sie mir sagen, was das Problem sein könnte?

0voto

Omar Aziz Punkte 7913

Simulieren Sie die Anfrage des anderen Servers mit curl und erstellen Sie eine test.php mit dem folgenden Inhalt:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/path/to/form");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
$data = array(
    'foo' => 'foo foo foo',
    'bar' => 'bar bar bar',
    'baz' => 'baz baz baz'
);

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$output = curl_exec($ch);

curl_close($ch);

Führen Sie es mit cli aus, um die Debugging-Informationen zu erhalten und zu sehen, was falsch ist. Vergessen Sie natürlich nicht, die Variablen, die vom Server zurückgegeben werden sollen, und die genaue URL anzugeben

0voto

Raghu Punkte 174

Ich habe den Grund für dieses Problem gefunden.

In der .htaccess Datei habe ich die Zeile für die Umleitung geschrieben:

RewriteRule ^ http://mysite.com{REQUEST_URI} [R=301,L]

Wenn ich die obige Zeile aus der Datei entferne, kann ich die POST-Felder von PG Server, aber ich bin Verlust der SESSION DATA gespeichert, bevor sie für PG enthält die Buchungsinformationen. Diese Sitzung kann nicht auf der Antwortseite angezeigt werden, da der Server eine völlig neue Sitzung aus der Antwortseite generiert.

Ich habe eine alternative Lösung für dieses Problem gefunden:

Ich verwende den folgenden Code in allen Seiten, die die Sitzung als erfordern:

$lifetime=60*30;
session_set_cookie_params ( $lifetime , '/', '.mysite.com');

Nach Hinzufügen des obigen Codes vor session_start(); .

Jetzt kann ich sowohl die POST-Daten von PG und auch in der Lage die SESSION-Werte beibehalten .

Ich halte dies jedoch nicht für eine ideale Lösung für dieses Problem. Wenn jemand eine SERVER-Konfiguration für die URL-Redirection und die Beibehaltung der SESSION-Werte nach REDIRECTION vorschlagen kann, wäre das großartig. Vielen Dank an alle :-)

0voto

kwelsan Punkte 1217

Wenn möglich, senden Sie einen eindeutigen Code (Bestellnummer) Ihrer Verkaufs-/Einkaufsbestellung in der PG-Anfrage, und ich bin sicher, dass Ihr PG diesen eindeutigen Code in den POST-Daten zurücksendet, und mit Hilfe dieses eindeutigen Codes können Sie die Bestellnummer verfolgen, um den Status der Bestellung zu aktualisieren.

Bei diesem Ansatz brauchen Sie sich nicht um die Sitzung zu kümmern.

0voto

user1635914 Punkte 125

Verwenden Sie dafür CURl, das ist sicher und zuverlässig.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X