benji: (mod_rewrite/PHP) Umgebungsvariablen "erhalten"!?

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

--
© by benji
® by benji
  all rights reserved
  E-Mail: Der (englisch) "minus" Benji bei gmx.de
  1. 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>");

    ;)

    1. 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

      --
      © by benji
      ® by benji
        all rights reserved
        E-Mail: Der (englisch) "minus" Benji bei gmx.de
  2. 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);

    --
      Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
    1. 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

      --
      © by benji
      ® by benji
        all rights reserved
        E-Mail: Der (englisch) "minus" Benji bei gmx.de
  3. 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

    1. 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

      --
      © by benji
      ® by benji
        all rights reserved
        E-Mail: Der (englisch) "minus" Benji bei gmx.de