spezielles REGEX Problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • spezielles REGEX Problem

    hi @ all.

    unter http://www.php-resource.de/forum/showthread.php?s=&postid=73155 gibt es was du der RewriteEngine.

    allerdings gibt es ein kleines RegelProblem bei formularen. das es sich 'nur' um REGEX handelt bräuchte ich mal eine lösung, wie man die urls incl. dem ? trennen könnte.

    bisher ist alles einfach:

    Code:
    RewriteRule ^irgendeinunterverzeichnis/(.*)/(.*)/(.*)/$   /auswertung.php?p1=$1&p2=$2&p3=$3
    -> gib 1. , 2. und 3. wert an die datei.

    jetzt aber mit ? also nach dem SUBMIT mittels GET eines formulares. POST wird wohl nicht gehen.

    also. ich habe dir url nach dem submit

    http://www.blah.de/hier/?para1=erster&para2=zweiter

    jetzt will ich das 'hier' und das nach dem ? haben.

    (.*)/?(.*)$

    das nach dem ? klappt aber leider nicht.

    resulat soll dann sein:

    Code:
    RewriteRule ^(.*)/?(.*)$  /auswertung.php?p1=$1&p2=$2
                                                 ^^    ^^
                            enthält 'hier' ------||    ||                             
                                                       ||
          soll 'para1=erster&para2=zweiter' enthalten -----||
    aber wie sieht nun die REGEX aus? so klappt es nämlich nicht.

    danke schon einmal.

    PS. info: manchmal wird das & nicht richtig dargestellt. habs leider nicht wegbekommen, ich denke aber, dass ihr wisst, was richtig ist ..
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |



  • #2
    kann mich hier echt keiner helfen ?
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      hey leute.....
      irgendeiner muss doch eine lösung haben ....
      oder gibt es keinen der regex kann?
      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


      Kommentar


      • #4
        Normalerweise sind hier genug, die RegEx wirklich gut beherrschen (nicht so wie ich).

        Versuch mal dein Prob noch mal anders zu beschreiben. Ich muss ganz ehrlich sagen, dass ichs nicht ganz verstanden hab.

        Kommentar


        • #5
          soll para1 und para2 durch p1 und p2 ersetzt werden ?
          meine Projekte bestaunen: http://www.kleiza.de

          Kommentar


          • #6
            jetzt versuche ich mal das ganze etwas besser zu umschreiben....

            ich benutze die RewriteEngine des apache.

            soweit ist ja alles kein problem. das ganze macht nur probleme, wenn ich ein FORMumlar verwende. alle parameter werden ja dem script nach dem fragezeichen übergeben.

            die url nach method=get sieht ja so aus.
            http://www.meinedomain.de/hier/?para1=erster&para2=zweiter

            wenn man jetzt NICHT die RewriteEngine verwendet, sondern direkt auf eine PHP-datei verlinkt, hat man die beiden parameter als variable zur verfügung. $para1 = "erster" und $para2 = "zweiter"

            da ich das ganze aber über die RewriteEninge bekomme, erhält mein script die parameter nicht. zumal das verzeichnis '/hier/' nur virtuell existiert, also nicht als reales verzeichnis auf dem server vorhanden ist. es wird NUR durch die RewriteEngine auf eine normale PHP-datei mit parametern umgelinkt.

            nun will ich quasi nur alle parameter mittels der RewriteEngine ebenfalls dem PHP-script mit auf den weg geben, sonst macht es ja keinen sinn.

            ich brauche also alles nach dem fragezeichen (sprich die parameter) mittels REGEX , damit ich sie an meinen sciptaufruf anhängen kann.

            das sollte dann so aussehen:
            /auswertung.php?steuerung=irgendwas&para1=erster&para2=zweiter

            ich rufe also die datei 'auswertung.php' auf und gebe ihr die beiden parameter 'para1' und 'para2' zusätzlich zu anderen parametern mit auf den weg.

            das ist schon alles ....
            Zuletzt geändert von Abraxax; 08.11.2002, 21:16.
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              also ich weiss jetzt nicht, aber wieso überhaupt regexp dafür verwenden ?
              geht das nicht mit:

              $teile=explode("?",$url);

              echo "auswertung.php?steuerung=irgendwas&".array_pop($teile);

              ??
              meine Projekte bestaunen: http://www.kleiza.de

              Kommentar


              • #8
                mhm. stimmt. wie nah eine lösung doch ist ...

                ich habs mal ausprobiert.
                mit GETENV("REQUEST_URI") bekomme ich alles. dann kann ich trennen und parse_str() verwenden. dann habe ich alles, was ich brauche ..

                danke dir erstmal.

                ich will nur nicht immer die parameter 'auslesen' wollen, da ich die datei 'auswertung.php' ja auch für andere geschichten verwende.

                ich werde mir wahrscheinlich einen anderen weg suchen.

                eine idee ist:
                - ich lasse das FORM auf eine echte datei linken.
                - dann lese ich den QUERY_STRING aus
                - diesen gebe ihn dann als 'verzeichnis' weiter, welches ich mit einer regel zu paramtern machen kann.

                FORM geht zu:
                http://www.meinedomain.de/hier/?para1=erster&para2=zweiter

                SCRIPT liest:
                para1=erster&para2=zweiter

                SCRIPT schreibt:
                para1=erster&para2=zweiter
                http://www.meinedomain.de/hier/para1=erster&para2=zweiter/

                REWRITEENGINE macht den rest.
                jetzt kann ich ja alles zwischen hier/... und .../ also para1=erster&para2=zweiter als $1 an ein anderes script reichen.

                ich teste es mal so und so, mal sehen welches besser für mich klappt...

                danke dir aber dennoch.
                manchmal sieht man das script vor lauter befehlen und ideen nicht mehr...
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar


                • #9
                  nach einigem test bin ich zu dem entschluss gekommen, dass es einfacher mit dem explode ist ans ziel zu kommen, als mit den 'trick'

                  PHP-Code:
                  parse_str(array_pop(explode("?",GETENV("REQUEST_URI")))); 
                  ich rufe das einfach am anfang der datei auf. wenn was drin ist, erhalte die die VARs zusätzlich. wenn ncihts drin ist, egal....

                  danke nochmals.
                  INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                  Kommentar


                  • #10
                    Gefahr erkannt, Gefahr gebannt... Hab die parse_str Zeile nicht am Anfang des Quelltextes platziert...

                    Hi!

                    Sorry, ich check das nicht...

                    Also: ich hab ein Form, das sich hinter einer mod_rewrite verbirgt, also

                    http://www.server.com/zone/lang/contact/

                    Diese Form sendet an den Mailer, also

                    http://www.server.com/admin/sendmail.php

                    Soweit funkt das ja ganz gut > das Email wird versandt.

                    Am Ende von sendmail.php steht:
                    header("Location: /$_REQUEST[zone]/$_REQUEST[lang]/contact/?ok=1");

                    Und nun möchte ich unter "contact" sagen:

                    if ($_REQUEST[ok]==1) { echo ("Super"); } else {}

                    Ich hab die Zeile
                    parse_str(array_pop(explode("?",GETENV("REQUEST_URI"))));
                    vor diese Abfrage gesetzt, aber die Variable $ok wird nicht erkannt.

                    Wie muss ich da vorgehen?

                    Bitte um Support. Danke, LG, Citral
                    Zuletzt geändert von Citral666; 17.05.2004, 17:12.

                    Kommentar


                    • #11
                      die parse_str()-schei**** war damals nur, wie ich noch php 4.0.6 hatte. die höheren versionen machen eigentlich keine probleme.

                      einfach $_GET['ok'] nehmen ... dass sollte funktionieren.

                      auch solltest du arrays niemals direkt in einen string schreiben. mache es lieber so....
                      PHP-Code:
                      header('Location: /'.$_REQUEST['zone'].'/'.$_REQUEST['lang'].'/contact/?ok=1'); 
                      ... wobei mir $_REQUEST auch ein dorn im auge ist.
                      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                      Kommentar

                      Lädt...
                      X