Variablen per URL weitergeben - Änderung?

TripleM

Mitglied
Hallo,

hier geht es von einem relativen PHP-Dummy um die Frage, ob mein neuestes Problem damit zusammenhängt, daß ich unsauberen Code geschrieben habe?

Ich habe auf einer Seite per URL drei Variablen weitergegeben gehabt:

Sitename, Site und Language. Das sah so aus:

if(isset($_GET['sitename'])) {} else {
$_GET['sitename'] = $titlewelc;
};
if($lang == ""){
$lang = "de";
} ;
if($site == ""){
$site = "welcome.php";
};

Warum ich das einmal mit isset gemacht hatte und einmal ohne weiß ich nicht mehr. Auf jeden Fall hatte die Übergabe wunderbar funktioniert, alles Variablen wurden korrekt übergeben. Jetzt gehe ich gerade heute nochmal auf die Seite, und was passiert: als Einzige Variable wird die "Sitename" richtig übergeben, also die Überschrift der Seite ändert sich bei unterschiedlichen Links mit unterschiedlichen Variablen. Aber die Spache und auch die Zielseite werden nicht mehr verändert: egal wie mein Link aussieht, ich bleibe immer auf "de" und der "welcome.php" hängen.

Frage: liegt das an dem unterschiedlichen Code den ich für die Variablen-Abrufe verwendet hatte? Und wenn ja: warum hat das früher funktioniert und jetzt plötzlich nicht mehr? Wie sähe ein absolut korrekter Code aus?

Danke für Eure generöse Hilfe ;)

TripleM
 
TripleM hat gesagt.:
Frage: liegt das an dem unterschiedlichen Code den ich für die Variablen-Abrufe verwendet hatte? Und wenn ja: warum hat das früher funktioniert und jetzt plötzlich nicht mehr?

Hallo,

das liegt an den Register Globals, wenn diese auf off sind, musst du die Variablen mit $_POST['variable']; bzw. $_GET['variable']; abfragen.

mfg
forsterm
 
Zuletzt bearbeitet:
DANKESCHÖN! Hat da der Provider irgendwann einfach was geändert. Sollte man da nicht benachrichtigt werden? Oder empfiehlt es sich von vorneherein immer gleich alles mit der von Dir genannten Form abzurufen?
 
Man sollte von vornherein mit $_POST und $_GET arbeiten.
Das schuetzt zum einen davor, dass der Provider spontan entscheidet register_globals aus off zu setzen und macht es einfacher mal den Server zu wechseln.
Denn wenn man zu einem anderen Provider wechselt weiss man ja vorher nicht wie das mit register_globals aussieht, und da es durchaus auch off sein kann ist man bei Verwendung von $_POST und $_GET immer auf der sicheren Seite.
 
Und je nachdem, wie das Error-Level eingestellt ist kann es ohne die [phpf]isset[/phpf] oder [phpf]empty[/phpf] Abfrage zu einer Fehlermeldung kommen, dass die Variable nicht existiert. Also besser (ich habe das if-else mit leerem if-Body verneint):
PHP:
if(!isset($_GET['sitename'])) {
    $_GET['sitename'] = $titlewelc;
}

if(empty($_GET['lang'])){
    $lang = "de";
} 

//Beispiel, um Vergleich mit isset vor Fehlermeldungen zu schützen:
if(isset($_GET['site']) && $_GET['site'] == ""){
    $site = "welcome.php";
}

Gruß hpvw

PS: Bitte nutze die Code Tags, [ php ]code[ /php ] für PHP-Quelltexte, [ html ]code[ /html ] für HTML-Quelltexte und [ code ]code[ /code ] für sonstige Quelltexte, natürlich ohne die Leerzeichen. Das macht die Quelltexte übersichtlicher. Für kuze Code-Teile im Fließtext (z.B. Variablen- oder Funktionsnamen) kannst Du [ mono ]kurzer Code fetzen[ /mono ] verwenden.
 
Zurück