Suche nach als

Sprachwechsel

Auf dieser Seite:

Dies ist ein Schprachschalter. Links rufen die sie beherbergende Seite wieder auf und wechseln entsprechend ihres (im Querrystring) übermittelten Wertes die Erscheinung der Seite. So werden Variablennamen verändert bzw. verlängert.

Sich selbst aufrufen

Diese Selbstfindung ist nur sinnvoll, wenn ein ausgelagertes Script mehrmals genutzt wird, wodurch es in verschiedene Dateien geladen wird.
Die superglobale Variable $_SERVER['PHP_SELF'] findet heraus wo sie sich befindet -
so lade ich die Datei mit dem Skript erneut.

Wähle einen Sprach-Link

deutsch

Variablen übermitteln durch Link

htmlspecialchars($_SERVER['PHP_SELF'],ENT_QUOTES)

Die Sprachreferenz (als Variable/Wert-Paar) wird dem Bild-Link durch ein Fragezeichen angehängt, dadurch wird sie mit der method='GET' übermittelt und zeigt sich in der Adresszeile als Querystring. Zur Verhinderung von eingeschleusstem Code werden die gefährlichen Zeichen in der Variablen PHP_SELF durch htmlspecialchars umgewandelt:
<a href="<?php echo htmlspecialchars($_SERVER['PHP_SELF'],ENT_QUOTES) ?>?Lang=DE"> <img src="images/fl_de.gif" alt="deutsch" width="22" height="12" border="0" /></a>

Variablen aus Querystring einlesen

Da ich die Informationen aus der Adresszeile einlese, könnte sich in der Variablen '$_GET["Lang"]' irgend ein Wert, also auch schädlicher Code, befinden. Darum darf ich die Variable nicht einfach in $Lang überführen und ausgeben, ich muss sie mit meinen Erwartungen vergleichen und wenn diese erfüllt sind, kann ich entsprechend die Variable $Lang selber setzen. Aber eigentlich ausgeben tue ich somit überhaupt gar keine irgendwoher geholte Benutzereingabe!

<?php
// Lang-Variable holen oder machen
if (isset($_GET["Lang"])) { // is set
  
if ($_GET["Lang"] == "DE") {$Lang="DE";} 
  elseif (
$_GET["Lang"] == "EN") {$Lang="EN";} 
} else {                    
// is not set
 
$Lang="DE";                // preset
}    

// Gefährliche Variante
if (isset($_GET["Lang"])) { // is set
 
$Lang=$_GET["Lang"];       // akzeptiert irgend etwas ohne Prüfung
} else {                    // is not set
 
$Lang="DE";                // preset
}    
?>

Die übersetzten Textvarianten

Die Variablen-Namen der übersetzten Textfragmente sind zweiteilig. Vorne bestimmen sie ihren Inhalt und hinten ihre Sprache.

<?php
// Text-Variablen setzen
 
$selbstDE="Sich selbst aufrufen";
 
$selbstEN="Play your self";
 
$flagDE="Wähle einen Sprach-Link";
 
$flagEN="Select a language link";
 
$superDE="Die superglobale Variable \$_SERVER['PHP_SELF'] findet heraus wo sie sich befindet 
  - so lade ich die Datei mit dem Skript erneut."
;
 
$superEN="The superglobal variable \$_SERVER['PHP_SELF'] stores  its filepath 
  - thats how I reload this same page."
;
?>

Zusammengesetzter Variablen-Namen

${variable.$variable}

Je nach Sprachwahl mittels Flagge, muss ich also den entsprechenden Variablen-Namen konstruieren; das bedeutet, die Variablen-Namen sind variabel.

<h2><?php  echo "${selbst.$Lang}"// Titel ?></h2>
<?php echo "${super.$Lang}";       // Text ?>
<h3><?php  echo "${flag.$Lang}";   // Untertitel ?></h3>

 


Valid XHTML 1.0 Check den Code.

Upload >> << Formular mit Selbstbezug
Ich bin hier: > PHP Lehrling >>> Sprachwechsel
 
HTML und XHTML | CSS | JavaScript und DHTML | PHP und MySQL | Andere Sprachen
Letzter Update: 19.12.2010