Gonzo: $_GET und $_SESSION liefern keine Werte

Beitrag lesen

if (isset($_GET['id']) && ($_GET['id'] != ''))
$id = $_GET['id'];
elseif (isset($_SESSION['UserId']) && ($_SESSION['UserId'] != ''))
$id = $_SESSION['UserId'];
else
$id = '';

$abfrage = "SELECT * FROM travelplan WHERE UserId = $id";

Nur nebenbei: Wenn ich ein ganz böser Mensch wäre, würde ich in der Adressleiste meines Browsers '…?id=0 or true' eintippen und darauf spekulieren, dass du (wie ja tatsächlich oben zu sehen) den Parameter id ungefiltert und ungesichert in deinen SQL-Befehl einfügst: 'SELECT * FROM travelplan WHERE UserId = 0 or true'. Und nun lasse dir mal durch den Kopf gehen, was da passiert …

Füge ich nach if/else $id = 105; //als Beispiel ein, funktioniert mein Plan.
Auf der Ausgabeseite lasse ich mir ausserdem auch die UserId aus der Session anzeigen - sie ist da. Und wenn ich im Browser ?id=105 anhänge, funktioniert der Plan nicht.

Die doch eigentlich naheliegendste Frage hast du dir anscheined noch nicht gestellt: Wie sehen denn die an der if-Abfrage beteiligten Variablen aus, konkret: was steht denn in $_GET? Füge vor der if-Zeile 'var_dump($_GET); var_dump($_SESSION);' ein (überprüfe solche Ausgaben immer in der Quellcodeansicht des Browsers, nicht in der normalen Webseitendarstellung!), oder benutze 'phpinfo(INFO_VARIABLES);'. Erst dann hast du einen Überblick darüber, welche Bedinungen gegeben sind.

Bei php.net hab ich nichts gefunden ob man $_GET für bestimmte Seiten beschränken kann, genauso $_SESSION - kann man das machen(?)

Nein. Sie sind lediglich bei uralten PHP-Versionen nicht vorhanden, aber da sie bei dir ja an anderer Stelle funktionieren, wird das nicht die Ursache sein.

Auch die include()-Funktion für die Einbindung der DB-Varianblen habe ich nicht hinbekommen, was ich auch gesetzt habe ('../start.php'

include('../start.php'); sollte eine Datei aus dem darüber gelegenen Verzeichnis einbinden.

oder './start.php'

./ ist das aktuelle Verzeichnis.

Wenn include() die besagte Datei nicht findet, sollte sich im Fehlerprotokoll des Servers eine entsprechende Meldung finden.