Christian: Wo is der Fehler?

Beitrag lesen

Ich habe den Fehler gerade gefunden.. im 2. Beispiel muss bei den Ausdrücken wie &deutsch1=".rawurlencode($_GET['deutsch1'])." das deutsch1 in ''. Warum auch immer, so funktioniert es.

Das ist kein "Wunder", sondern zwingend so vorgeschrieben (du solltest die anderen Vorkommen auch ändern).

Grund: Der Array-Index ist entweder eine Zahl (Zahlen werden in PHP ohne umgebende Zeichen geschrieben):
$array[3]

Oder er ist ein String. Strings werden mit Anführungszeichen geschrieben:
$array['index']

Die Index-Angabe kann auch in einer Variablen selbst liegen:
$index = 2;
$array[$index] -> Zahlzugriff

$stringindex = "index";
$array[$stringindex] -> Stringzugriff

PHP kann auch Konstanten definieren. Die soll man normalerweise GROSSSCHREIBEN, aber zwingend ist das nicht.
define ("index", "irgendwas")
echo index; -> gibt "irgendwas" aus
$array[index] -> Zugriff auf $array['irgendwas']

Wenn du also auf $_GET[deutsch1] zugreifst, und keine Konstante "deutsch1" definiert ist, läuft das schief. Warum es trotzdem mal funktioniert, weiß ich nicht - scheint reine Glückssache zu sein. Oder du hast noch nicht gemerkt, dass es auch nicht funktioniert.

Es geht tatsächlich in Verbindung mit dem scr-Befehl, ich habe beide Varianten ausprobiert:

<?php
 echo "<frame name="links"  src="links1.php?ko1=".rawurlencode($_GET[ko1])."&name1=".rawurlencode($_GET[name1])."
           &deutsch1=".rawurlencode($_GET[deutsch1])."
                &fw1=".rawurlencode($_GET[fw1])."
                &kr1=".rawurlencode($_GET[kr1])."">";
?>

<?php
 echo "<frame name="links"  src="links1.php?ko1=".rawurlencode($_GET[ko1])."&name1=".rawurlencode($_GET['name1'])."
           &deutsch1=".rawurlencode($_GET['deutsch1'])."
                &fw1=".rawurlencode($_GET['fw1'])."
                &kr1=".rawurlencode($_GET['kr1'])."">";
?>

Ich hab's jetzt geändert, vielleicht bin ich jetzt nicht mehr auf Glück angewiesen ;-)

Gruss, Christian

  • Sven Rautenberg