Kein $_SESSION nach session_start()

weltvolk

Mitglied
Leider werden die Inhalte von $_SESSION['inhalt'] nach session_start() nicht übertragen und der Login-Vorgang schlägt fehl (bin dem entsprechenden Beispiel auf php-faq.de genau gefolgt). Der session_name() kann jedoch ausgegeben werden. Woran liegt das, würde die Einbindung der Session in die URL dieses Problem beheben?
 
schmeiß mal hier den Codeschnippsel rein, wie du die Session deklariert hast (also in deinem Fall $_SESSION['inhalt'] und den Block, mit welchem du es versucht hast auszulesen und probiere ausserdem mal print_r($_SESSION); vielleicht zeigt er dir ja doch was an...
 
Hier das Anfangsskript a.php mit Formular:
PHP:
<?php
session_start();
if (isset($_POST['submit'])) {
  $_SESSION['inhalt'] = $_POST['test'];
  header("Location: http://www.weltvolk.de/php/b.php");
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="text" name="test" value="Ja!">
<input type="submit" name="submit" value=" Senden ">
</form>
Und hier das Folgeskript b.php:
PHP:
<?php
session_start();
if (isset($_POST['submit'])) {
    echo "" . $_SESSION['inhalt'] . "<br />\n";
    print_r($_SESSION);
} else {
    echo "NIX\n";
}
?>
Du kannst es selbst über den Link versuchen. Ich verstehe nicht, warum es nicht geht, immer nur "NIX".
 
Hier das Anfangsskript a.php mit Formular:
PHP:
<?php
session_start();
if (isset($_POST['submit'])) {
  $_SESSION['inhalt'] = $_POST['test'];
  header("Location: http://www.weltvolk.de/php/b.php");
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="text" name="test" value="Ja!">
<input type="submit" name="submit" value=" Senden ">
</form>
Und hier das Folgeskript b.php:
PHP:
<?php
session_start();
if (isset($_POST['submit'])) {
    echo "" . $_SESSION['inhalt'] . "<br />\n";
    print_r($_SESSION);
} else {
    echo "NIX\n";
}
?>
Du kannst es selbst über den Link versuchen. Ich verstehe nicht, warum es nicht geht, immer nur "NIX".

Weil du evtl 2 mal nee SESSION startest... is doch klar das da nix dabei herauskommt mach mal
PHP:
if (!isset ($_SESSION["inhalt"])) 
{ 
  echo "nix";
  die; // oder was auch immer du machen willst.. 
}
 
print_r($_SESSION);

mfg Spikaner
 
Zuletzt bearbeitet:
Schön wär's, wenn du recht hättest. Habe das session_start() probeweise mal von der Folgeseite genommen, obwohl es nicht richtig ist - trotzdem Fehlanzeige.
 
Hallo!

Das Problem liegt darin, das du b.php nicht mit deinem Formular aufrufst sondern nur dorthin umleitest und nicht $_SESSION abfrägst, sondern ob $_POST['Submit'] gesetzt wurde ;-)

Das in beiden Dateien die session gestartet werden muss ist schon richtig so!

b.php sollte aber eher so aussehen

PHP:
<?php
session_start();
if (isset($_SESSION['inhalt']) {
    echo "" . $_SESSION['inhalt'] . "<br />\n";
    print_r($_SESSION);
} else {
    echo "NIX\n";
}
?>
 
Hallo,

das Problem ist, dass du den Wert von $_POST['test'] nicht in der zweiten Datei abfragen kannst, weil es diesen dort nicht gibt!

PHP:
if (isset($_POST['submit'])) {
    echo "" . $_SESSION['inhalt'] . "<br />\n";
    print_r($_SESSION);
} else {
    echo "NIX\n";
}
wird also immer NIX ausgeben :)

Versuch doch mal:
PHP:
if ( ( isset($_SESSION) ) && ( $_SESSION['inhalt'] != "") ) {
    echo "" . $_SESSION['inhalt'] . "<br />\n";
    print_r($_SESSION);
} else {
    echo "NIX\n";
}
dann solltest du auch ein Ergebnis zurückgeliefert bekommen
 
Wenn das als Test gedachte einfache Skript hier schon nicht funktioniert, frage ich mich, ob session_start() überhaupt irgendwo funktioniert bzw. eingesetzt wird.
 
Also session_start() wird so ziemlich in jedem größeren Script eingesetzt! Es ist schließlich ein einfaches Hilfsmittel Daten über einen längeren Zeitraum zu nutzen.

Außerdem mach doch ein viel einfacheres beispiel:

a.php
PHP:
session_start();
$_SESSION['name'] = 'Hans Wurst';
echo '<a href="b.php">Klick zu b.php</a>';

b.php
PHP:
session_start();
echo 'Du bist '.$_SESSION['name'];

Wenn das nicht funktioniert, sind vielleicht sessions aufm server ausgeschaltet oder so. Oder vielleicht auch deine Cookies, die die Session übertragen
 
Zurück