(mod_rewrite/PHP) Umgebungsvariablen "erhalten"!?
benji
- programmiertechnik
0 aitee0 benji
0 Matti Maekitalo0 benji
0 Andreas Korthaus0 benji
Hallo,
also, was ich in [pref:t=77417&m=446819] geschrieben habe, habe ich nun selbst zusammengebastelt:
<Directory "E:/apache/server15/web/www3/news">
RewriteEngine On
RewriteBase /news
RewriteRule ^archiv(?:/?|/(\d{4})(?:/?|/(\d{1,2})(?:/?|/[^\d]*(\d+)[^\d]*)))$ "view_archiv.php?year=$1&month=$2&news=$3"
</Directory>
wunderbar, funktioniert bestens. Wie unschwer zu erkennen, führt das also dann zu "view_archiv.php". Dort habe ich mir mal des Spaßes halber Umgebungsvariablen ausdrucken lassen. An den QUERY-String und damit die GET-Variablen würde ich ohne Probleme dran kommen, Probleme bereiten mir jedoch die über POST übermittelten Daten. Auf die habe ich nämlich dummerweise keinen Zugriff.
Die superglobale Variable "_SERVER" beim Aufruf von "http://www3.server15.localtest/news/archiv/2002/7/news_5?test=übertragen":
SERVER: Array
(
[REDIRECT_STATUS] => 200
[HTTP_ACCEPT] => image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*
[HTTP_ACCEPT_LANGUAGE] => de
[HTTP_ACCEPT_ENCODING] => gzip, deflate
[HTTP_USER_AGENT] => Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
[HTTP_HOST] => www3.server15.localtest
[HTTP_CONNECTION] => Keep-Alive
[PATH] => C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem
[SystemRoot] => C:\WINNT
[COMSPEC] => C:\WINNT\system32\cmd.exe
[PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
[WINDIR] => C:\WINNT
[SERVER_SIGNATURE] => Apache/2.0.48 (Win32) PHP/4.3.3 Server at www3.server15.localtest Port 80
[SERVER_SOFTWARE] => Apache/2.0.48 (Win32) PHP/4.3.3
[SERVER_NAME] => www3.server15.localtest
[SERVER_ADDR] => 192.168.1.20
[SERVER_PORT] => 80
[REMOTE_ADDR] => 192.168.1.20
[DOCUMENT_ROOT] => E:/Homepages/webserver
[SERVER_ADMIN] => www3.server15.localtest@www3.server15.localtest
[SCRIPT_FILENAME] => E:/apache/server15/web/www3/news/view_archiv.php
[REMOTE_PORT] => 2172
[REDIRECT_QUERY_STRING] => year=2002&month=7&news=5
[REDIRECT_URL] => /news/archiv/2002/7/news_5
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => GET
[QUERY_STRING] => year=2002&month=7&news=5
[REQUEST_URI] => /news/archiv/2002/7/news_5?test=übertragen
[SCRIPT_NAME] => /news/view_archiv.php
[PHP_SELF] => /news/view_archiv.php
[PATH_TRANSLATED] => E:/apache/server15/web/www3/news/view_archiv.php
[argv] => Array
(
[0] => year=2002&month=7&news=5
)
[argc] => 1
)
Auffalen tud mir, dass hier einige Einträge mehr dabei sind, die mit "REDIRECT_" anfangen. Aber es ist nix, was auf eine Art POST-Vars hinweisen würde.
Wer weiß rat?
Vielen Dank,
benji
versuch mal:
echo ("Session-ID: ".session_id()."</br>");
echo ("Neue Session unter: ".SID."</br>");
echo ("<pre>");
echo ("Session ");
print_r($_SESSION);
echo ("Post ");
print_r($_POST);
echo ("Get ");
print_r($_GET);
echo ("</pre>");
;)
Hallo aitee,
versuch mal:
habe ich gemacht, hier die Ausgabe:
------------------------------
Session-ID:
Notice: Use of undefined constant SID - assumed 'SID' in "E:/apache/server15/web/www3/news/view_archiv.php on line 11
Neue Session unter: SIDSession
Notice: Undefined variable: _SESSION in "E:/apache/server15/web/www3/news/view_archiv.php on line 15
Post Array
(
)
Get Array
(
[year] => 2002
[month] => 7
[news] => 5
)
------------------------------
Ich habe keine Ahnung was das bringen soll!? Ich habe keine Session gesetzt, POST ist verständlicherweise leer und GET mit den werten, die mod_rewrite übermittelt hat, gefüllt!
benji
use Mosche;
wunderbar, funktioniert bestens. Wie unschwer zu erkennen, führt das also dann zu "view_archiv.php". Dort habe ich mir mal des Spaßes halber Umgebungsvariablen ausdrucken lassen. An den QUERY-String und damit die GET-Variablen würde ich ohne Probleme dran kommen, Probleme bereiten mir jedoch die über POST übermittelten Daten. Auf die habe ich nämlich dummerweise keinen Zugriff.
POST-Daten kommen nicht als Umgebungsvariable, sondern über den Standard-Input.
use Tschoe qw(Matti);
Hallo Matti,
POST-Daten kommen nicht als Umgebungsvariable, sondern über den Standard-Input.
In Perl, aber in PHP kann ich idr. ganz gemütlich per $_POST darauf zugreifen.
WauWau
Hi!
wunderbar, funktioniert bestens. Wie unschwer zu erkennen, führt das also dann zu "view_archiv.php". Dort habe ich mir mal des Spaßes halber Umgebungsvariablen ausdrucken lassen. An den QUERY-String und damit die GET-Variablen würde ich ohne Probleme dran kommen,
guck Dir mal das Flag [QSA] an:
'qsappend|QSA' (query string append)
This flag forces the rewriting engine to append a query string part in the substitution string to the existing one instead of replacing it. Use this when you want to add more data to the query string via a rewrite rule.
http://httpd.apache.org/docs-2.0/mod/mod_rewrite.html#RewriteRule
Damit kommt man an die GET-Parameter auch über $_GET.
Probleme bereiten mir jedoch die über POST übermittelten Daten. Auf die habe ich nämlich dummerweise keinen Zugriff.
Wieso? Bei mir geht das über $_POST, auch nach dem Rewrite. Du darfst natürlich keinen externen Redirect über [R]... verwenden.
[REQUEST_METHOD] => GET
Bei einem GET-Request hast Du natürlich ach keien POST Variablen. Und in $_SERVER schonmal gar nicht.
Grüße
Andreas
Hi Andreas,
Damit kommt man an die GET-Parameter auch über $_GET.
ja, an die GET-Vars komme ich über verschiedene wege wunderbar heran, das ist kein problem.
Probleme bereiten mir jedoch die über POST übermittelten Daten. Auf die habe ich nämlich dummerweise keinen Zugriff.
Wieso? Bei mir geht das über $_POST, auch nach dem Rewrite. Du darfst natürlich keinen externen Redirect über [R]... verwenden.
ja, das habe ich mir jetzt auch schon überlegt. Ich werds mal ausprobieren, wenns geht, dann ist ja wunderbar.
[REQUEST_METHOD] => GET
Bei einem GET-Request hast Du natürlich ach keien POST Variablen. Und in $_SERVER schonmal gar nicht.
genau, in $_POST werde ich sie dann vorfinden.
danke,
benji