[PHP] WeiterleitungsProblem

  • Bei einer mehrsprachigen Webseite, beginnen englische Seiten mit e_ , deutsche mit d_ und so weiter.
    Jetzt soll aber eine "Sprachumschaltung" eingebaut werden.
    Soll heissen, anstatt lediglich zur anderssprachigen Index zu verlinken, soll wenn bspw. von "e_blah.php" auf Deutsch umschaltet wird, zu "../deu/d_blah.php" gewechselt werden und von bspw. "d_blub.php" zu "../eng/e_blub.php", etc..

    Grundidee:
    - Übergebe Dokumentenname ("/bliblablub/x_blah.php") an eine "../changeL.php"
    - Lösche Chars bis nach x mit substr ausm String (--> "_blah.php")
    - Hänge Ordner (eng / deu / ...) und "Länderkennung" (e / d / ...) an (--> "/zzz/z_blah.php")
    - Wechsle zu neuer Url

    Dabei gibt's allerdings zwei Probleme:
    1. Der momentane Dokumentenname zeigt sich etwas widerspengstig, sprich lässt sich nicht ans changeL.php übertragen.
    2. Die Weiterleitung soll ohne Javascript o.ä. erfolgen, damit Noscript u.ä. nicht dazwischen funkt.

    Zu 1 hier die momentan ausprobierte Version:
    <form action="../changeL.php" method="post">
    <input type="hidden" name="currentDoc" value=<?php echo $_SERVER['PHP_SELF']?> />
    <input type="image" name="submit" src="../img/img.png" width="39" height="26" />
    </form>

    Wenn changeL.php im Ordner "Bli Bla Blub" liegt, und "e_blah.php" im Unterordner "eng",
    dann ergibt echo($_POST['currentDoc']) im changeL.php "/Bli/Bli"
    aber echo($_SEVER['PHP_SELF']) korrekterweise "/Bli Bla Blub/changL.php".

    Zu 2 weiss ich nur, dass die header-Funktion nur mit absoluten Pfaden funktioniert und daher nicht geeignet ist.

    Wäre dankbar, wenn mir da wer weiterhelfen könnte.

  • Wieso benutzt du überhaupt ein Prefix? Da du unterschiedliche Verzeichnisse hast, ist das doch überflüssig. Ansonsten würde ich Links zur Laufzeit mit Hilfe einer Session-Variable zusammenbauen.

  • Die Ordner sind nur der Übersichts halber da, die Präfixe, damit da nichts verwechselt wird, falls mal was verschoben werden muss.

    Habe leider kaum Erfahrung mit Sessionen. Magst du mir deine Idee erläutern?

  • also ich würde den ansatz anders angehen...
    abhängig davon, wieviel text du hast und ob du eh schon ne datenbank benutzt, würde ich entweder über konstanten gehen und die texte in einer languagefile stapeln (zb lang_de.php oder lang_en.php) und die dann entsprechend der sprachauswahl laden.
    bei ner datenbank isses etwas simpler, da man da dann entsprechend nur die abfrage machen muss mit dem zusatz der sprachauswahl.
    angenommen du hast ne tabelle: id, menu_id, lang_id, text
    brauchste nur auswählen im sinne von "where menu_id = 1 and lang_id = 'selectedLang'"

    nachteil an der db-version: man sollte einen bereich haben wo man die texte einpflegen kann