PHP Funktioniert $_GET noch?

ermel83

Lieutenant
🎅Rätsel-Elite ’09
Registriert
Feb. 2008
Beiträge
704
Hallo,

habe ein kurzes Anliegen, vielleicht kann mir jemand auf die Sprünge helfen.

Und zwar habe ich nach knapp 10 Jahren wieder angefangen mich ein bisschen mit PHP zu beschäftigen.
Um wieder ein "Gefühl" dafür zu bekommen, hab ich auf Code meiner alten Webseite zurückgegriffen, die allerdings noch unter PHP 4 geschrieben wurde.

Nun zu meinem Problem: Ich will eine Seite mit Hilfe der include-Funktion aufbauen. Dazu soll ein "Header", ein "Inhaltsteil" und ein "Footer" geladen werden.

So sieht meine index.php nun aus:

Code:
<?php

$_GET['show']=$show;

if (!isset($show)) {
    $show="start";
    }

elseif ($show == header || $show == footer || !(file_exists("seiten/".$show.".inc"))) {
    $show="404";
    }

include 'seiten/header.inc';
include 'seiten/'.$show.'.inc';
include 'seiten/footer.inc';

?>

Jetzt passiert bei mir folgendes: Er lädt IMMER die start.inc, ganz egal was in der Adresszeile im Browser hinter ?show= steht. Ich weiß, dass die Seite genau so früher einwandfrei funktioniert hat, also nehme ich an, dass sich bei PHP etwas geändert hat. Ich hab aber nirgendwo etwas dazu gefunden :-/ Seht ihr was?

Im Idealfall sollte es so aussehen:

www.homepage.de/ -> Startseite
www.homepage.de/?show=start -> ebenfalls Startseite

www.homepage.de/?show=xyz -> xyz-Seite (sofern vorhanden)

www.homepage.de/?show=header (oder footer, oder eben nicht vorhanden) -> 404 Fehlerseite


Alle Seiten liegen auch als *.inc brav im Unterordner /seiten.

Selbst wenn ich die Variable $show manuell in der Browser-Adressleiste ändere, es zeigt mir trotzdem IMMER die Startseite an.

Habt ihr da irgendwelche Ideen? Wäre euch sehr dankbar!

Zur Info: Der Server steht bei 1&1, PHP 5.5 und MySQL 5 sind installiert...

Gruß,

ermel
 
Zuletzt bearbeitet:
Hi, da ich Programmierer bin konnte ich den Fehler relativ schnell sehen.
In Zeile 9 schreibst du "header" und "footer" NICHT in Hochkomma. Somit handelt sich beim Vergleich um keinen String und auch keine Variable, sondern eher um eine fehlerhaft deklarierte Konstante. Egal. Mach die Hochkomma dazu.
 
Die Syntax ist Variable = Zuweisung, nicht andersrum.

Code:
$show = $_GET["show"];

Und am besten auch noch prüfen, ob es show überhaupt gibt.
 
Danke Nase, das wars!! Wahnsinn, hab echt ewig gesucht.

Aber wie meinst du das mit prüfen, ob es die Variable gibt? Ich prüfe doch direkt eine Zeile drunter? Muss das auch nach oben?

@agrundne: danke auch dir, ist verbessert ;)
 
Zuletzt bearbeitet:
Wenn du folgendes baust,
Code:
<?php
 $show = $_GET['show'];
?>
aber in deiner URL den Parameter SHOW nicht verwendest, meldet Apache eine Meldung das es einen nicht gesetzten Index "show" gibt und das füllt das Log File. Ich persönlich habe es wie folgt gelöst,
Code:
<?php
 $get['show'] = (isset($_GET['show'])) ? $_GET['show'] : '';
 $show = $get['show'];
?>
Da gibt es bestimmt noch schönere Methoden, aber das hält mein Fehlerprotokoll schön leer :) Und ich denke mal, dass war auch gemeint von den anderen.

Gruß, Domi

Nachtrag: Ah... Mit meiner Idee, könntest du dann natürlich die Überprüfung in Zeile 5 komplett vergessen, denn es wäre immer "isset()" :rolleyes:
 
Zuletzt bearbeitet: (Korrektur)
Danke Domi!!! :)
 
Zurück
Oben