3 Stimmen

PHP: Übertragung eines großen Arrays zwischen zwei Standorten

Ich versuche, ein großes Array zwischen zwei Websites in PHP zu übertragen. Ich bin in beiden der Administrator. Das Array wird auf einer Seite erstellt, und nach seiner Erstellung möchte ich den Benutzer automatisch auf die andere Seite umleiten und das verarbeitete Array weitergeben.

Ich kann die superglobale SESSION nicht verwenden, da sie auf eine bestimmte Domäne beschränkt ist. GET ist nicht geeignet, da das Array zu lang ist. Ich bin nicht sicher, ob POST geeignet ist und ob es eine Möglichkeit gibt, die Daten automatisch zu senden, ohne den Benutzer zu zwingen, auf eine Schaltfläche zu klicken und ein Formular einzureichen. Ich weiß, Javascript kann für diese verwendet werden, aber lieber etwas mehr robust.

Ich bin relativ neu in PHP und würde mich freuen, von anderen Möglichkeiten zu hören, dies zu tun. Danke!

4voto

Yacoby Punkte 52756

Am einfachsten wäre es, eine HTTP-Bibliothek wie cURL zu verwenden und eine POST-Anfrage an die andere Website zu senden. Die Angabe der IP-Adresse des Nutzers würde es Ihnen ermöglichen, die gesendeten Daten zuzuordnen. Ohne JavaScript können Sie einen Benutzer nicht mit POST-Daten umleiten.

Eine Sache, die Sie bei der obigen Methode beachten sollten, ist, dass je nach Implementierung der Benutzer vor den Daten ankommen kann.

Es gibt kein Limit für POST, wie es in den HTTP-Spezifikationen definiert ist, aber es kann zu Problemen bei der Handhabung auf Ihrem anderen Server kommen (je nachdem, was Sie mit "groß" meinen), abhängig von der PHP-Konfiguration. (Das POST-Limit ist, glaube ich, standardmäßig auf 8 MB eingestellt)

2voto

Dor Punkte 7096

Senden Sie eine HTTP-POST-Anfrage über cURL-Funktionen und fügen Sie die serialisieren() Array in den Anfragekörper einfügen.

2voto

Joel L Punkte 3018

Ich würde etwa so vorgehen:

  • ein Token auf Server A erzeugen (z. B. sha1(Zeitstempel + Sitzungs-ID + random()))
  • Verwenden Sie cURL, um das serialisierte Array an den Server B zu senden, und geben Sie dabei das von Ihnen erzeugte Token weiter
  • Speichern Sie auf Server B die serialisierten Daten und das Token in einer Datenbanktabelle - Felder: Token (CHAR), Daten (BLOB)
  • den Benutzer umzuleiten zu http://ServerB/?data_token=[TOKEN GENERATED IN STEP 1]
  • Server B holt die mit dem Token verbundenen Daten aus der Datenbank, löscht den Datenbankeintrag und speichert das Array in der neuen Benutzersitzung.

1voto

TrippyD Punkte 725

Nun, wenn beide auf demselben Server sind, können Sie eine Sitzung der anderen entführen. Ich habe dies verwendet, um zu einem sicheren Server zu springen, bevor, verwenden Sie die session_id() Funktion auf dem ersten Host, um die Sitzung zu erhalten, dann verwenden Sie die gleiche Funktion, um es auf dem zweiten Host zu setzen.

Ver http://www.php.net/manual/en/function.session-id.php

1voto

ps. Punkte 3940

Ich würde vorschlagen, dass Sie, nachdem Sie das "Array" erstellt haben, es mit einer ID verknüpfen (und irgendwo speichern) und dann mit dieser ID auf die andere Seite umleiten. Von Site 2 aus können Sie unter Verwendung der ID eine Seite auf Site 1 aufrufen, die das "Array" zurückgibt

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