$_SESSION wird nicht beibehalten


tklustig

Erfahrenes Mitglied
#1
Hallo Leute,
wenn ich ein Formular über
HTML:
<form action="<?= htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
neu lade, steht mir die zuvor auf derselben Seite erstellte $_SESSION Variable nicht zur Verfügung. Wie sonst kann ich den Inhalt dieser Variable sichern, ohne ihn in eine Textdatei schreiben und wieder auslesen zu müssen?
PHP:
<form action="<?= htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
require_once 'inc/anzeigen.php';
<div id="submitDropDown">
   <label>DropDown</label>
   <input class="button3" type="submit" name="submit0" value="Submit">
</div>
</form>
    <?php
    session_start();
    if (!empty($_REQUEST['submit0'])) {
        $boolQuery = true;
        $_SESSION['dropD'] += $_REQUEST["anzahlItems"];
    } else {
        $boolQuery = false;
        $_SESSION['dropD'] = 50;
    }...
 
Zuletzt bearbeitet:

tklustig

Erfahrenes Mitglied
#3
Die Session verschwindet wieder nach dem ersten Request. $_REQUEST["anzahlItems"] wird von der includierten Datei anzeigen.php geliefert. XDEBUG zeigt ganz klar alle Werte an, bis auf die $_SESSION. Die wird nach dem Request wieder aus den Superglobals entfernt. Ich habe nirgends einen Befehl a la session_destroy(), unset() etc..etc.. ! kann es sein, dass
PHP:
<form action="<?= htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
dieses Verhalten verursacht ? Wenn mir auf dieser Plattform niemand erläutern kann, warum die Sessions nicht registriert bleiben,, muss ich die Information halt in eine Textdatei schreiben. Hier noch die Ausgabe des Interpreters:
Code:
 Notice: Undefined variable: _SESSION in X:\xampp\htdocs\temperatur.git\dataAll.php on line 84

$_SESSION.jpg
Hier der Code, den ich auf die Schnelle geschrieben habe, um das Problem in den Griff zu bekommen:
PHP:
    if (!empty($_REQUEST['submit0'])) {
        $boolQuery = true;
        $datei = fopen($folder . '/inc/dropDownID.txt', 'r+');
        $id = file_get_contents($folder . '/inc/dropDownID.txt');
        $id += $_REQUEST["anzahlItems"];
        fputs($datei, $id);
        fclose($datei);
    } else {
        if(file_exists($folder . '/inc/dropDownID.txt'))
            unlink ($folder . '/inc/dropDownID.txt');
        $boolQuery = false;
        $id = 50;
        $datei = fopen($folder . '/inc/dropDownID.txt', 'w');
        fputs($datei, $id);
        fclose($datei);
    }
 
Zuletzt bearbeitet:

basti1012

Erfahrenes Mitglied
#4
So was hatte ich auch mal in der art.
Hatte ein kleines Login Script mit Session und co .
Das hatte auch alles perfekt funktioniert. Dann hatte ich es auf der Seite mit eingebunden und schon wahr nach den submit klick im Login die Session leer. Das wahr das gleiche wie bei dir hier.Ich habe mich dumm gesucht , die .htaccess Datein gelöscht die Ordner hin und her kopiert( da ging es ab und zu ) was ich dann gar nicht mehr verstanden haben.
Habe dann zum schluss raus gefunden das ein Script im Footer ( was über php eingebunden wahr ) was besucher Zählt noch eine Config.php hatte und da wahr dann nochmal session start drinne.
Da hatte ich das dann raus gelöscht und es ging alles wieder.

Kurz gesagt = Kuck doch mal über mehrere includierte Scripte ob da doch noch irgendwas ist.
Bei mir wahr 4 oder 5 mal ( verschachtelt nenne ich das jetzt mal ) bis ich zu den Übeltäter kam
 

tklustig

Erfahrenes Mitglied
#5
Uuups. Inwiefern kann ein wiederholtes session_start() eine Sessionvariable verhunzen? Natürlich habe ich noch andere Session-Scripte, die übrigens tadellos laufen. Da ich jetzt alles auf fopen() bzw, fputs() und fie_get_contents() umprogrammiert habe, bleibt das auch so. Mich würde dennoch ineressieren: Kann ein wiederholtes session_start(); in verschiedenen Scripten dazu führen, dass $_SESSION nicht mehr funktioniert? Ohne ein session_start() steht mir doch gar nix zur Verfügung. Insofern habe ich nicht begriffen, was Du(basti1012) mir eigentlich sagen willst?
 
#6
Also wenn dir diese Meldung
Notice: Undefined variable: _SESSION in X:\xampp\htdocs\temperatur.git\dataAll.php on line 84
nicht auf die Sprünge hilft, weiss ich auhc nicht.

Offensichtlich verwendest Du irgendwo in dem Script "_SESSION" anstatt "$_SESSION"

P.S.: Aber gut, dass das error-reporting angeschaltet ist :)