Ecki: Anfängerfrage zu Variablen

Hallo,

als Anfänger in der PHP-Programmierung habe ich mir das Leben immer recht leicht gemacht. Z.B. einfach eine Variable $lang angelegt und diese entweder mit "_de" oder "_en" gefüttert und somit eine Datei mit den Textinhalten aufgerufen und die Variablen ausgelesen. Etwa so:

require "include/language_" . "$lang" . ".inc.php";

Jetzt wollte ich langsam auch mal das "richtig" Programmieren lernen aber stecke an einer ganz einfachen Problematik. Wenn ich meine Variablen alle nur mit _POST befülle, wie kann ich dann durch einen einfachen Link steuern, ob die englischen oder deutschen Inhalte geladen werden??? Sonst passiert das ja einfach durch einen Link und in dem Link gebe ich der Variable $lang das richtige Kürzel.

Ich hoffe, das war halbwegs verständlich und würde mich riesig freuen, wenn mir gerade mal jemand den gedanklichen Schubs in die richtige Richtung gibt.

Thanx

Ecki

  1. Hallo!
    Damit du die Sprache per Link verändern kannst müsstest du auf das $_GET Array zugreifen. Deine $lang Variable müsste dann so aussehen:

      
    // nur mit GET  
    $lang = $_GET['lang'];  
      
    // bzw wenn es mit GET und POST gehen soll, dann so  
    // hier wird POST bevorzugt  
    $lang = (empty($_POST['lang'])) ? $_GET['lang'] : $_POST['lang'];  
    
    

    Um die Sprache zu verändern müsste ein link dann so aussehen:

      
    <a href="deineseite.php?lang=en">View this page in english</a>  
    
    
    --
    Lg,
    Snafu
  2. Hallo Ecki,

    require "include/language_" . "$lang" . ".inc.php";
    Jetzt wollte ich langsam auch mal das "richtig" Programmieren lernen

    Was meinst du mit "richtig" programmieren? Die Anführungszeichen um $lang sind übrigens unnötig (und falls $lang ein URL-Parameter (?lang=xxx) ist, solltest du darauf per $_GET['lang'] zugreifen).

    ... aber stecke an einer ganz einfachen Problematik. Wenn ich meine Variablen alle nur mit _POST befülle, wie kann ich dann durch einen einfachen Link steuern, ob die englischen oder deutschen Inhalte geladen werden??? Sonst passiert das ja einfach durch einen Link und in dem Link gebe ich der Variable $lang das richtige Kürzel.

    Du meinst, es ist bisher example.com/seite.php?lang=de bzw ?lang=en, und du willst das lang nicht mehr in der URL, sondern per POST machen? Das würde ich dir nicht empfehlen, da du - wie du bereits gemerkt hast - dann keine Links mehr verwenden kannst. Mein Tipp: Links wie example.com/en/seite.php bzw. example.com/de/seite.php. Das erreichst du mit mod_rewrite, das stellst du so ein, dass /de/seite.php auf seite.php?lang=de umgeleitet wird.

    Grüße aus Freiburg,
    Marian

    --
    Microsoft broke Volkswagen's world record: Volkswagen made only 22 million bugs!
    <!--[if IE]><meta http-equiv="refresh" content="0; URL=http://www.getfirefox.com"><[endif]-->