template

Index :: PHP/MySQL :: Webserver: Datentransfer

In unserem Szenario gibt es einen Webserver Alpha (der Daten besitzt und liefern kann) sowie einen Webserver Beta (der die Daten braucht und speichern will).

Die Initiative des Transfers kann von beiden Webservern ausgehen, je nachdem, ob die Daten geholt oder geschickt werden:

Webserver Beta holt Daten


Diese Art des Transfers wird meist aus folgenden Gründen gewählt: Im folgenden Beispiel lesen wir die Daten nicht aus einer passiven Alpha-Datei, sondern wir rufen ein Alpha-Skript, das uns die Daten liefern soll.
Unser offensives Skript auf Webserver Beta könnte sich z.B. so die Information der ID 3 beschaffen:
$data = "";
if ($fh = fopen("http://alpha.com/serve.php?id=3", "rb")) {
  while (!feof($fh)) $data .= fread($fh, 1024);
  fclose($fh);
}
Dadurch stünden die Daten in der Variablen $data zur Verfügung.

Der Lieferant, Skript serve.php auf Webserver Alpha (http://alpha.com) könnte so aussehen:
<?php
switch (intval($_GET['id'])) {
  case 1: echo "Information 1"; break;
  case 2: echo "Information 2"; break;
  case 3: echo "Information 3"; break;
  default: echo "Unbekannte ID";
}
?>
In der Praxis würden die Daten aus einer Datei (evtl. gestreamt) oder einer Datenbank kommen.

Webserver Alpha schickt Daten


Das Schicken von Daten setzt voraus, dass auf beiden Seiten ein entsprechendes Skript vorliegt:
Das Formular auf Webserver Alpha kann per style='DISPLAY:none' auch komplett versteckt werden.
Auslöser für den Transfer ist eine Javascript-Funktion, die z.B. von einem Button aufgerufen wird.
Javascript im Header
function DoSend() { var f = document.f_send; f.action = "http://beta.com/receive.php"; f.submit(); }
Weiter unten, im BODY: das unsichtbare Formular
<form name='f_send' method='POST' style='DISPLAY:none'> <input type='text' name='data' value='Bla bla bla'> </form>
Der Absende-Button:
<button type='button' onClick='DoSend()'>Senden</button>
Das empfangende Skript receive.php auf Webserver Beta könnte so aussehen:
Php Einleitung
$data = $_POST['data'];
... hier: Daten speichern / in Datenbank schreiben ...
Weiter unten, im BODY:
Daten wurden empfangen.<br> <a href='<?php echo $_SERVER["HTTP_REFERER"]; ?>'>Zur&uuml;ck</a>
In der Praxis würde man die Daten wahrscheinlich nicht sofort wegspeichern, sondern sie zunächst einmal anzeigen, damit der Benutzer eventuell noch eine Auswahl treffen und vielleicht auch entscheiden kann, was mit welchen Daten passieren soll.

Webserver Beta lässt Datenauswahl schicken


Häufig weiss Webserver Beta nicht, ob (und wenn ja, welche) Daten auf Webserver Alpha bereitstehen. In solchen Fällen soll der Benutzer dann eine Auswahl treffen können. Dies erledigt am besten ein Skript der Quelle Alpha. Jeglicher Datentransfer wird mittels POST/GET-Parametern durchgeführt.

Hier ein denkbarer Ablauf:

Index :: PHP/MySQL


template