Hallo
wollte mal Eure Meinung zu folgender Idee hören:
Um Daten von einem Server zum nächsten zu befördern möchte ich einen
simplen POST-Request benutzen.
In erster Linie habe ich das für SQL-Daten gedacht die von einem zentralen
Host aus auf mehrere 0815-WebSpace-Pakete verteilt werden.
In der Regel hat man da ja keinen Remote Zugriff auf die MySQL-Datenbank.
Hintergrund dabei ist, dass ich ein zentrales Web-Interface (das nenne ich mal Mutter) zur Datenpflege für mehrere Freunde/ Kunden/ Mandanten/ wie auch immer (die nenne ich mal Konten) aufsetzen will .
Es geht dabei konkret um kleinste bis kleinere Webseiten (die nenne ich mal Kinder).
Es soll also eine Aktualisierung der Kinderdatenbanken von einer
zentralen Mutterdatenbank aus stattfinden.
(Nur in dieser Richtung)
Ich verspreche mir davon, das ich
1. nicht ständig auf allen möglichen WebHostingPakten mein kleines
WCMS aktualisieren muss
2. ich bei den Kindern trotzdem die Datenbanken benutzen kann
3. bei Verbesserungen, Korrekturen etc. am zentralen WCMS sofort alle Konten profitieren. (Klar, bei Fehlern leiden dann auch alle gemeinsam ;-) )
4. ich den SourceCode schön geheim halten kann (Pfui, und dann die Festplatte mit all den schönen OpenSource-Entwicklungen vollstopfen)
Das erstmal als erste Idee, die kann man natürlich noch weiterspinnen
Unter der Voraussetzung das
a) Innerhalb der zu übertragenden Querys/ Daten keine sensiblen
Informationen stehen (also keine Passwörter, Kreditkarteninfos, Kundendaten etc.)
b) die Datenmengen eher gering sind
c) die Komplexität der Datenbankstrukturen sehr gering anzusetzen ist
d) der geheime Schlüssel je Konto unterschiedlich und geheim ist
... ist diese Idee dann
a) total dämlich
b) super toll
c) wenn Dir das Spass macht dann mach es halt so
d) ein alter Hut das gibt es doch schon bei ____ und bei ___
e) wasserdicht, zumindest was unerwünschte Injektionen angeht
f) sehr gefährlich weil Du nicht daran gedacht hast dass ____
g) schieb die Daten doch per FTP rüber
h) Du kennst wohl das Perl-Modul _____ nicht
i) viel zu umständlich, mach doch einfach _____
k) _____
Hier mal mein vorläufiges Ergebnis, ich habe einen einfachen "Sender"
z.Zt. noch als Formular und einen "Empfänger" der guckt ob die Daten ok sind.
<?php
/*
* sender.php
* ============
*/
$ReceiverHost = 'examplehost.net';
$ReceiverPath = '/receiver.php';
$SecretKey = 'geh31m';
// FUNCTIONS (stolen from http://php-faq.de)
function PostToHost($host, $path, $referer, $data_to_send)
{
$fp = fsockopen($host, 80);
fputs($fp, "POST $path HTTP/1.1\r\n");
fputs($fp, "Host: $host\r\n");
fputs($fp, "Referer: $referer\r\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
fputs($fp, "Content-length: ". strlen($data_to_send) ."\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $data_to_send);
while(!feof($fp)) {
$res .= fgets($fp, 128);
}
fclose($fp);
return $res;
}
// MAIN
if (isset($_POST['ISSEND'])){
$QueryToSend = $_POST['QUERY'];
$KeyToSend = md5($SecretKey.$QueryToSend);
$DataToSend = 'QUERY='.$KeyToSend.$QueryToSend;
// POST-Request absetzen
$x = PostToHost(
$ReceiverHost,
$ReceiverPath,
"SENDER WAS HERE",
$DataToSend
);
echo $x;
}
$html = <<< EOT
<html>
<form action="{$_SERVER['PHP_SELF']}" method="post">
<input type="hidden" name="ISSEND" value="true">
<textarea name="QUERY"></textarea>
<input type="submit" value="send">
</form>
</html>
EOT;
print $html;
?>
<?php
/*
* receiver.php
* ============
*/
$SecretKey = 'geh31m';
$DataIsValid = false;
$DataReceived = isset ($_POST['QUERY'])
? $_POST['QUERY']
: false;
if ($DataReceived){
$KeyReceived = substr($DataReceived, 0, 32);
$QueryReceived = substr($DataReceived, 32);
$KeyToCompare = md5($SecretKey.$QueryReceived);
$DataIsValid = ($KeyToCompare == $KeyReceived);
}
if ($DataIsValid) {
echo "DATA_VALID";
}else{
echo "DATA_INVALID";
}
?>
Danke für Eure Anregungen und Kommentare.
Viele Grüße
lulu
bythewaythewebsuxgoofflineandenjoytheday