PHP: Undefinied variable _Session


#1

Also, ich habe in der Schule als letzte Aufgabe des Jahres die Aufgabe bekommen, mit nem Kumpel ein Skript_Projekt zu machen (Also ne Homepage mit php, javascript und html).Wir habens am Anfang bissl schleifen lassen, dafür immer in der Schule uns voll reingehangen und sind auch fast fertig, fehlt nicht mehr viel. Da jetz allerdings Wochenende ist und Montag abgabe, wollten wir den Rest zuhause machen. Haben also lale Dateien in Onedrive hochgeladen + die DB, bei uns auf dem PC XAMPP mit apache installiert und haben dann die Seite geöffnet. Soweit so gut. Nun haben wir allerdings das Problem, das obwohl wir alles genau so übernommen haben, nur die IP für den DB-Server auf localhost geändert, die Sessions anscheinend nicht mehr funktionieren… Vor paar Stunden auf dem Schul-PC + Server lief alles noch Problemlos…

Ich hab einiges gegoogled und die Lösung war immer “Session_start()” an den anfang jeder php-Datei… Problem ist: das habe ich schon und es funktioniert trotzdem nicht. Ein echo nach dem setzen der session-Variablen und auf der Hauptseite am anfang zeigt mir, das sie zwar beim login korrekt gesetzt werden, aber in meiner hauptseite nichtmehr existieren… Warum?

Hab die Dateien + die DB als SQL-Anweisungen mal in den Anhang gepackt. Kann mir wer helfen? Verzweifel grad daran…
https://mega.nz/#!j5tgBTrS!hVvuPtsVcuESI7dpw5DQUTNWFK7gJvEz6SMBHqF1O_c


#2

Mir gefällt zwar nicht, dass du den Quellcode auf eine andere Webseite verfrachtet hast, da man die wichtigen Teile sicher auch im Forum posten könnte, dennoch versuch ich mal auf blinden Raten mal dir zu helfen, bei den Sachen die du bereits im Post erwähnt hast:

Zuerst mal Session_start sollte klein geschrieben also session_start(); und der Zugriff sollte über $_SESSION[‘var’] erfolgen. Noch eine Frage: Hast du die Hauptseite aktualisiert? Denn wenn sie aktualisiert wird, sollten die vom Browser aufgenommen Cookies wieder an den Server gesendet werden.


#3

Ja habe ich alles getan, wurde auch nur groß gemacht von meiner Autokorrektur. Hab den Fehler vor paar minuten nochmal drüber schauen auch gefunden…

Auf einmal war der php-Block nurnoch mit <? ?> umschlossen und nicht mehr mit <?php ?>. Warum auch immer, genauso warum mir das nciht als Fehler ausgegeben wird und der php Code bis auf die sessions noch funktioniert


#4

Hast du übrigens in den PHP Error Log geschaut? Dort müsste es ja stehen, wenn irgendetwas hängt.


#5

MEinste die ganzen undefined indexes als aufgabe auf der Seite?


#6

Undefined indexes bedeutet wohl, dass du irgendwelche Fehler machst. Hast du es überhaupt sichergestellt, dass session_start() und $_SESSION unabhängig von deinem Code funktionieren? Es kann durchaus sein, dass es ein fehlenden Zugriff auf einen bestimmten Ordner gibt. Deinen Code würde ich mir jedenfalls genauer anschauen, wenn du die Funktionen von der Präsentation trennst. Dann wäre das ganze insgesamt klarer strukturiert und verständlich was du willst.

So etwa, denn damit könntest doppelten Code vermeiden und die Testbarkeit verbessern, wodurch du leichter herausfinden könntest, wo es klemmt:

users.php

<?php
include ("functions.php");
tb_initiere();
tb_verbinde_sql();
?>
<table>
<tr><th>User</th><th>Name</th></tr>
<?php
$users = tb_bekomme_alle_nutzer();
foreach(users as $user) { ?>
<tr>
 <td><?php $user["id"] ?></td>
 <td><?php $user["name"] ?></td>
</tr>
<?php } ?> 

functions.php

    <?php
    function tb_initiere() {
        // TODO
    }
    function tb_verbinde_sql() {
        // TODO
    }
    function tb_bekomme_alle_nutzer() {
        // Gibt array mit allen Nutzern zurück
    }

(Für PHP ist das Syntaxhighlighting nicht der Hammer, aber es funktioniert)

#7

Hatte schonmal vor das ganze auszulagern und nich alle sin die Hauptseite zu machen. Hatte dann aber immer wieder probleme, was das verloren gehen von Variablen oder sonstige Bugs angeht. Habs dann erstmal sien lassen, ist ja nur Schulprojekt…
Mein ursprüngliches PRoblem hat sich jaa uch schon durch das fehlende php an dem <? erklären/lösen lassen. Das die Sessions funktionieren hab ich in der login.php direkt ja schon getestet, in dem ich diese ausgegeben hab und da hatte es auch funktioniert