Übergabe Formularinhalte an externes PHP Script
Hallo zusammen,
ich habe heute eine relativ außergewöhnliche Frage:
Und zwar geht es um folgendes: Ich habe für eine größere Sportveranstaltung ein Buchungssystem für die Teilnehmer. Bei diesem Buchungssystem handelt es sich um ein Plugin für Joomla, das wir leider nicht ohne weiteres ablösen wollen. Es ist eben genau das was wir brauchen.
Leider bietet diese Buchungssystem keine wirkliche Möglichkeit der Zahlung per SEPA Lastschrift. Auch nach Diskussion mit dem Hersteller gab es keine Einigung. Daher habe ich mir selber etwas überlegt:
Ich habe das Buchungssystem, welches auf einem Webserver bei all-inkl läuft. Wenn der Teilnehmer "Lastschrift" auswählt erscheint ein Formular, in dem die Bankverbindung und noch einiges mehr eingegeben werden kann. Wenn nun der Button weiter angeklickt wird, sollen die Inhalte des Formulars an eine anderes PHP Script übergeben werden, welche diese weiter verarbeitet. Der Knackpunkt an der ganzen Sache: das zweite PHP Script liegt nicht auf einem Server bei all-inkl sonder auf einem Server der bei uns im Serverraum steht und uns als Schnittstelle für die Zeiterfassung dient. Auf diesem Server läuft ein Apache der einmal selber so konfiguriert ist, dass nur die IP des all-inkl Servers drauf zugreifen kann und zum anderen wird das ganze auch noch mal von der Sophos Firewall entsprechend geschützt. Dieser Server hat wiederum die Möglichkeit eine Schritt weiter ins Interne Netzwerk zu gehen und die Lastschriften in einer Interne Datenbank abzulegen.
Die Frage lautet also, wie bekomme ich die Daten aus dem Formular an den Internen Server übergeben.
Mir fällt spontan folgendes ein:
ich rufe, mit dem Klick auf "weiter", die URL des Internen Servers nach folgendem Schema auf: https://interner.server.de/sepa/sepa.php?bic=GENDODESSE.....
in der sepa.php fange ich dann die übergeben Parameter ab und baue daraus meinen Datensatz für die Datenbank.
Das finde ich allerdings nicht wirklich schön. Und außerdem könntet ich mir gut vorstellen, das das Sicherheitstechnisch nicht wirklich gut ist....
Ein require_once oder include_once funktioniert natürlich wiederum nicht.
Auch mit Iframe ist mir nicht geholfen, da ja nur die "All-Inkl" IP auf den internen Server zugreifen darf...
Hat jemand eine Idee? Oder eine besseren Vorschlag wie man das ganze eleganter lösen kann als über so eine "PHP-Schnittstelle"
Danke für Eure Hilfe.
ich habe heute eine relativ außergewöhnliche Frage:
Und zwar geht es um folgendes: Ich habe für eine größere Sportveranstaltung ein Buchungssystem für die Teilnehmer. Bei diesem Buchungssystem handelt es sich um ein Plugin für Joomla, das wir leider nicht ohne weiteres ablösen wollen. Es ist eben genau das was wir brauchen.
Leider bietet diese Buchungssystem keine wirkliche Möglichkeit der Zahlung per SEPA Lastschrift. Auch nach Diskussion mit dem Hersteller gab es keine Einigung. Daher habe ich mir selber etwas überlegt:
Ich habe das Buchungssystem, welches auf einem Webserver bei all-inkl läuft. Wenn der Teilnehmer "Lastschrift" auswählt erscheint ein Formular, in dem die Bankverbindung und noch einiges mehr eingegeben werden kann. Wenn nun der Button weiter angeklickt wird, sollen die Inhalte des Formulars an eine anderes PHP Script übergeben werden, welche diese weiter verarbeitet. Der Knackpunkt an der ganzen Sache: das zweite PHP Script liegt nicht auf einem Server bei all-inkl sonder auf einem Server der bei uns im Serverraum steht und uns als Schnittstelle für die Zeiterfassung dient. Auf diesem Server läuft ein Apache der einmal selber so konfiguriert ist, dass nur die IP des all-inkl Servers drauf zugreifen kann und zum anderen wird das ganze auch noch mal von der Sophos Firewall entsprechend geschützt. Dieser Server hat wiederum die Möglichkeit eine Schritt weiter ins Interne Netzwerk zu gehen und die Lastschriften in einer Interne Datenbank abzulegen.
Die Frage lautet also, wie bekomme ich die Daten aus dem Formular an den Internen Server übergeben.
Mir fällt spontan folgendes ein:
ich rufe, mit dem Klick auf "weiter", die URL des Internen Servers nach folgendem Schema auf: https://interner.server.de/sepa/sepa.php?bic=GENDODESSE.....
in der sepa.php fange ich dann die übergeben Parameter ab und baue daraus meinen Datensatz für die Datenbank.
Das finde ich allerdings nicht wirklich schön. Und außerdem könntet ich mir gut vorstellen, das das Sicherheitstechnisch nicht wirklich gut ist....
Ein require_once oder include_once funktioniert natürlich wiederum nicht.
Auch mit Iframe ist mir nicht geholfen, da ja nur die "All-Inkl" IP auf den internen Server zugreifen darf...
Hat jemand eine Idee? Oder eine besseren Vorschlag wie man das ganze eleganter lösen kann als über so eine "PHP-Schnittstelle"
Danke für Eure Hilfe.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 328548
Url: https://administrator.de/forum/uebergabe-formularinhalte-an-externes-php-script-328548.html
Ausgedruckt am: 14.04.2025 um 12:04 Uhr
15 Kommentare
Neuester Kommentar
Hallo,
ja, ich würde unbedingt Bankdaten per Get Parameter übertragen...
Zum anderen frage ich mich gerade, warum man einmalige Zahlungen per SEPA ermächtigen sollte - richt Paypal oder Sofortüberweisung ein, das ist sicherer und sinniger.
Ich für meinen Teil gebe doch keinem SEPA Einzugsermächtigung, wenn ich nicht regelmäßig an diese zahle.
VG
ja, ich würde unbedingt Bankdaten per Get Parameter übertragen...
Zum anderen frage ich mich gerade, warum man einmalige Zahlungen per SEPA ermächtigen sollte - richt Paypal oder Sofortüberweisung ein, das ist sicherer und sinniger.
Ich für meinen Teil gebe doch keinem SEPA Einzugsermächtigung, wenn ich nicht regelmäßig an diese zahle.
VG

Per "post" aber hoffentlich nur SSL gesichert! An den CORS Header im Skript denken (Access-Control-Allow-Origin).
JavaScript Variable an PHP per AJAX?
Gruß
JavaScript Variable an PHP per AJAX?
Gruß

Zitat von @schneerunzel:
Aber gerade Post funktioniert ja nicht, das das Script ja auf einem anderen Server liegt.
Oder habe ich deine Antwort jetzt falsch verstanden?
Doch das funktioniert, solange du im PHP-Script welches die Daten empfängt den CORS-Header setzt der genau das zulässt!Aber gerade Post funktioniert ja nicht, das das Script ja auf einem anderen Server liegt.
Oder habe ich deine Antwort jetzt falsch verstanden?
header("Access-Control-Allow-Origin: *");
https://en.m.wikipedia.org/wiki/Cross-origin_resource_sharing
HTTP access control (CORS)

Zitat von @schneerunzel:
Ah. Ok.
Aber leider ist das auch nicht das richtige, da das Ergebnis des Formulars nicht vom Server selbst sondern vom Client aus an das PHP Script weiter gegeben wird. Der Client des Users soll allerdings in keinem Fall die Möglichkeit haben, mit dem Internen Server zu kommunizieren.
Wirklich nur die IP des All Inkl Servers darf (laut Firewall Regel) den Internen Server erreichen und dort das Script zur weiter Verarbeitung ausführen.
Ah. Ok.
Aber leider ist das auch nicht das richtige, da das Ergebnis des Formulars nicht vom Server selbst sondern vom Client aus an das PHP Script weiter gegeben wird. Der Client des Users soll allerdings in keinem Fall die Möglichkeit haben, mit dem Internen Server zu kommunizieren.
Wirklich nur die IP des All Inkl Servers darf (laut Firewall Regel) den Internen Server erreichen und dort das Script zur weiter Verarbeitung ausführen.
Du hast es falsch verstanden!
Der Server kann das genauso per PHP und Post Request an den anderen übermitteln! Und wenn du es im PHP mit curl machst.

kann ich dann z.B: ein include/include_once oder require_once machen?
Nein, siehe Link in deinem anderen Thread. Ein POST mit file_get_contents oder curl.http://stackoverflow.com/questions/5647461/how-do-i-send-a-post-request ...

und wie verarbeite ich das jetzt auf dem internen Server?
Ganz normal, das ist so wie wenn du per POST Daten an ein PHP-Script schickst.Die Daten holst du wie gehabt aus $_POST['feld'] usw..

Was mache ich falsch?
Brille aufsetzen:// use key 'http' even if you send the request to https://...
Und von error_reporting oder Debug-Ausgabe von Variablen hast du wohl auch noch nichts gehört?!
Argh... und so jemanden lässt man auf so ein Projekt los?
Ich bin weg, sowas sollte man nicht auch noch fördern.
Gruß und viel Erfolg beim Basteln.
Hallo,
Ich würde über curl die url des internen servers aufrufen und die Parameter wie du schon schreibst in GET übertragen. Sicherheitstechnisch ist es egal solange TLS (umgangssprachlich SSL) genutzt wird. Die GET Paramter sind auch im Crypto Stream also sicher vor fremden einblicken.
Trotzdem würde ich aber auf den Internen Server sowohl auf den al-ink server die eingaben alle escapen um bad requests (Hacker Angriffe, naja Script Kiddi Angriffe) zu verhindern.
Gruß an die IT-Welt,
J Herbrich
Ich würde über curl die url des internen servers aufrufen und die Parameter wie du schon schreibst in GET übertragen. Sicherheitstechnisch ist es egal solange TLS (umgangssprachlich SSL) genutzt wird. Die GET Paramter sind auch im Crypto Stream also sicher vor fremden einblicken.
Trotzdem würde ich aber auf den Internen Server sowohl auf den al-ink server die eingaben alle escapen um bad requests (Hacker Angriffe, naja Script Kiddi Angriffe) zu verhindern.
Gruß an die IT-Welt,
J Herbrich