$_POST nach redirect ?
Moeren
- php
Hallo Leute,
kurze frage, ist es möglich nach dem man per error404 redirected wurde an die POST Daten ranzukommen ? An die GET daten komm ich ja über den $_SERVER['REDIRECT_QUERY_STRING'] aber hab nix gefunden um die POST-Daten zu bekommen..
schonmal danke für jede Hilfe.
echo $begrüßung;
kurze frage, ist es möglich nach dem man per error404 redirected wurde an die POST Daten ranzukommen ?
Man wird bei einem 404er nicht einfach so redirectet. Wenn du die POST-Daten nicht direkt im Request entgegennimmst, dann hast du schlechte Karten.
echo "$verabschiedung $name";
Hello,
Man wird bei einem 404er nicht einfach so redirectet. Wenn du die POST-Daten nicht direkt im Request entgegennimmst, dann hast du schlechte Karten.
Es ist eine serverinterne Umleitung, wie bei Mod_Rewrite
Trotzdem dürften die Request-Daten nicht verloren gehen.
Ich habe das aber noch nicht ausprobiert, werde es aber gleich mal machen :-)
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Naja genau darum ging es ja. Ich habe nen PHP dokument bestimmt für den e404. Dieser nimmt die $_SERVER['REDIRECT_URL'] um das gesuchte zu bestimmen, schaut dann in die verzeichnisse und db und gibt die Ergebnisse aus was dazu gefunden wurde. Gibt es ne Datei die direkt so heißt wird diese eingebunden und ausgeführt.
So das ich für mein GB zum beispiel statt www.asd.de/?site=gb nur noch www.asd.de/gb eingebe.
Aber wenn nun jemmand ins gb posten will und das per POST geht, stehen weder $_POST noch $_REQUEST des ursprügnlich aufgerufenen Dokument zu verfügung (vielleicht doch, weiß aber net wo, hab komplett $GLOBALS danach durchsucht).
And die GET daten komm ich leicht per:
parse_str($_SERVER['REDIRECT_QUERY_STRING'],$_GET);
aber an die POST halt nicht.
Momentan habe ich es so gelöst das man sobald man www.asd.de/gb aufruft sofort an www.asd.de/?site=gb weitergeleitet wird.. wenn man von da aus weitermacht wie früher geht ja alles... aber es wäre halt schön wenn ich nur noch über die platzhalter arbeiten könnte, aber manchmal braucht man halt POST ;)
Hello,
http://bugs.php.net/bug.php?id=25426
ganz unten:
[8 Sep 2003 6:58am UTC] sniper@php.net
Apparently Apache does not redirect the post data -> not PHP bug.
Aber ich weiß, dass ich das als eine meiner letzten Übungen im Januar hingebastelt hatte, dass man ein "ErrorDocument" _mit_ den gesamten Header-Daten und dem Post-Body zur Verfügung hatte. Das ging mMn mit einem der zusätzlichen Modul. Kann sein, dass es Module Header war. Und die SSI-Verarbeitung musste aktiv sein (?).
Ich habe dann leider nicht weiter (mit PHP) damit herumbasteln können, wollte ich aber immer mal.
Thema war ja "Dienste auf einem Linux-Host" und nicht PHP.
Aber wenn man den gesamten Request zur Verfügung hat, müsste man sich aus den RAW_POST_DATA usw. das Zeug selber parsen können, was man braucht.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Aber wenn man den gesamten Request zur Verfügung hat, müsste man sich aus den RAW_POST_DATA usw. das Zeug selber parsen können, was man braucht.
hmm da spuckt er mir nix aus, hab gelesen das man in der php.ini always_populate_raw_post_data einschalten muss um an $HTTP_RAW_POST_DATA ranzukommen.. nun wäre das aber schlecht da die scripte auch auf servern funktionieren sollen die ich nicht administriere
Hello,
hmm da spuckt er mir nix aus, hab gelesen das man in der php.ini always_populate_raw_post_data einschalten muss um an $HTTP_RAW_POST_DATA ranzukommen.. nun wäre das aber schlecht da die scripte auch auf servern funktionieren sollen die ich nicht administriere
Das Problem steckt auch im Apachen. Eigentlich muss man sagen, dass die mitr der Abschaltung der Header- und Body-Daten bei der Weiterleitung an ein ErrorDocument eine potentielle Sicherheitslücke schließen wollten.
Wenn die nun wieder zulässt, dass Post-Data an ein nicht vorhandenes Dokument gesendet werden können, reißt Du da ggf. eine Lücke auf, die den Server angreifbar macht. Die Daten werden als Environment zum Script bereitgestellt und gammeln dann irgendwie im Speicher rum. Es könnte ja auch ein Upload enthalten sein, also viel Platz für Unsinn.
siehe hierzu aber auch:
http://www.brainonfire.net/blog/apache-pitfall-errordocument-post/
Wir haben das aber noch ganz anders gemacht. Ich grübele schon die ganze Zeit, wie denn. Ich wollte es sowieso noch zuende bespielen :-)
Im Prinzip ist mir dabei damals klar geworden, dass der Apache schon viele Dinge enthält, die man sonst mit PHP erst wieder emulieren muss. Man muss die Klamotten nur einschalten und PHP hat nur noch die Hälfte zu tun.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Wenn beim spielen was bei rauskommmt sag bescheid, bin sehr an dem ergebnis interessiert...
Jetzt mal vom Sicherheitsaspekt abgesehen ist es schon Schade das man die daten net bekommt...
Hello,
Jetzt mal vom Sicherheitsaspekt abgesehen ist es schon Schade das man die daten net bekommt...
per Mod_Rewrite würde es einwandfrei funktionieren.
Da musst Du nur die Rewrite-Conditions entsprechend wählen:
http://www.webmasterworld.com/forum92/5222.htm
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Ja sry, hatte erst geantwortet und erst dann dein Link gelesen :D
auf jeden Fall danke, jetzt funzt es wie es soll.
Hello,
Ja sry, hatte erst geantwortet und erst dann dein Link gelesen :D
auf jeden Fall danke, jetzt funzt es wie es soll.
Und wie hast Due es jetzt gelöst?
Vielleicht hier nochmal eine kurze Beschreibung für die Nachwelt?
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Naja ich habs erstmal einfach nur getestet gehabt..
also die htaccess mit
RewriteEngine On
RewriteBase /
DirectoryIndex index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /work/cms/index.php [L]
Und schon hab ich alle $_REQUEST daten in der index gehabt...
weiter verwenden konnte ich es aufgrund von Zeitmangel nicht, da andere bestandteile halt wichtiger waren...
Hello,
beim Apachen ist die Errorseite ein HTML-Dokument, das mittels SSI zusammengeklebt wird
Damit kann man allerhand Sinniges und Unsinniges anstellen.
Man kann aber auch eigene Error-Seiten definieren.
http://httpd.apache.org/docs/2.2/mod/core.html#errordocument
Und somit könntest Du auch ein PHP-Script als Error-Document festlegen.
Suchtest Du diese Möglichkeit?
Wie es bei anderen Webservern läuft, weiß ich leider nicht.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Moin!
beim Apachen ist die Errorseite ein HTML-Dokument, das mittels SSI zusammengeklebt wird
Nö, eigentlich erstmal nicht.
Damit kann man allerhand Sinniges und Unsinniges anstellen.
Mit SSI natürlich, wenngleich dessen Möglichkeiten natürlich begrenzt sind im Vergleich zu umfangreicheren Skriptsprachen.
Man kann aber auch eigene Error-Seiten definieren.
http://httpd.apache.org/docs/2.2/mod/core.html#errordocument
Und somit könntest Du auch ein PHP-Script als Error-Document festlegen.
Suchtest Du diese Möglichkeit?Wie es bei anderen Webservern läuft, weiß ich leider nicht.
Im Prinzip ähnlich: Für jeden HTTP-Statuscode kann man eine eigene Seite definieren, bzw. ein Skript. Es wird nur meist nicht über so eine banale Konfigurationsdatei funktionieren, sondern etwas grafischer - zumindest wenn man den IIS im Blick hat.
- Sven Rautenberg