Thread Kann man mit Checkbox ein aufgerufendes Skript bestimmen?
(8 answers)
Opened by kimmy at 2015-04-10 12:15
Also:
Willst Du nun mit HTTP-Redirect arbeiten? Oder das Ziel-Skript aus dem Dispatch-Skript heraus direct mit system() aufrufen? Beim ersten Ansatz teilt das Dispatch-Skript dem Client per HTTP-Response 302 mit, dass er die Anfrage auf das Ziel-Skript umleiten soll. Das kannst Du im Dispatch-Skript mittels $cgi->redirect(...) implementieren. Das Dispatch-Skript ist dann fertig. Der Client bekommt vom Dispatch-Skript eine 302-Antwort mit der Ziel-URL und führt anschließend einen neuen GET-Request auf die Ziel-URL aus (kommuniziert von da an also direkt mit dem Ziel-Skript.) Wenn Du dem Ziel-Skript Parameter aus dem ursprünglichen POST-Request übergeben willst, musst Du sie an die URL des Redirects dran hängen. Für Deinen Parameter 'XLS-Datei' wäre das z.B. $target_url."?XLS-Datei=".$filename. Dabei musst Du noch das Escapen des Filenames berücksichtigen. Nehm' also am besten ein CPAN-Modul zum Zusammensetzen der URL anstatt - wie hier - einfach die Strings aneinander zu hängen. Das Ganze setzt voraus, dass (a) Dein Ziel-Skript GET-Requests unterstützt (b) Du nicht zu viele oder zu große Paramenter hast, die ein POST erfordern. Der zweite Anastz - direkter Aufruf des Ziel-Skripts mit system(), ohne Redirect - setzt voraus, dass das Ziel-Skript überhaupt bei einem Aufruf mit system() funktioniert. Das ist bei einem CGI-Skript meist NICHT der Fall, weil es i.d.R. zusätzliche Informationen vom Webserver braucht (wie z.B. URL und Parameter). Diese werden meist über Environment-Variablen übergeben. Hier könntest Du Glück haben, dass der Webserver diese Variablen beim Aufruf des Dispatch-Skripts schon gesetzt hat und sie so an das Ziel-Skript übergeben werden. Dann sollte das Ziel-Skript die gleichen Parameter sehen, wie sie auch das Dispatch-Skript sieht. Einfach mal ausprobieren, ob das funktioniert. Zweite Hürde beim Ansatz mit system(): Das Dispatch-Skript muss den Output Deines Ziel-Skripts an den Webserver weitergeben. |