Lynky: Session-Variablen weitergeben

Hallo miteinander,

Ich erzeuge mit PHP eine SESSION (mein erstes Mal ;)) und möchte einige Datgen im Sessionarray an eine andere Seite weitergeben. Nur leider scheint er nur die Session-ID weiterzugeben.

Session wird gestartet:

<?
  session_start();
  header("Cache-control: private");

$_SESSION['user'] = 'OnkelDuck';
  echo "<head>";
  echo "<meta http-equiv="refresh" content="1; URL=http://www.ichbineineblume.de/user/index.php4">";
  echo "</head>";
?>

... und auf dieser Folgeseite der Benutzer angezeigt:

<?
  session_start();
  header("Cache-control: private");   //IE 6 Fix

echo "USER:";
  echo $_SESSION['user'];
  echo session_id();
?>

nur leider zeigt mir das Skript nur die Session-ID an, der Eintrag "user" im Session-Array scheint verloren zu sein :(
Ich bin für jeden Tip dankbar,

Philipp

  1. Hallo!

    <?
      session_start();
      header("Cache-control: private");

    $_SESSION['user'] = 'OnkelDuck';
      echo "<head>";
      echo "<meta http-equiv="refresh" content="1; URL=http://www.ichbineineblume.de/user/index.php4">";
      echo "</head>";
    ?>
    ... und auf dieser Folgeseite der Benutzer angezeigt:
    <?
      session_start();
      header("Cache-control: private");   //IE 6 Fix

    echo "USER:";
      echo $_SESSION['user'];
      echo session_id();
    ?>

    ..., der Eintrag "user" im Session-Array scheint verloren zu sein :(

    Also ich bin in Sachen sessions nicht fix, aber hast Du schon mal kontrolliert, ob die ausgegebene session_id auf der zweiten Seite die gleiche ist wie jene auf der ersten?

    Beste Grüße
    Viennamade

    1. Hallo,

      zunächst einmal danke für die schnelle Antwort.

      hast Du schon mal kontrolliert, ob die ausgegebene session_id auf der zweiten Seite die gleiche ist wie jene auf der ersten?

      ja, beide IDs sind identisch. Demnach müsste es sich auch um die gleiche Session handeln. Kann man auf diese Weise überhaupt Variablen weitergeben oder muss man das trotzdem per URL machen?

      Grüße,

      Philipp

      1. Hallo!

        hast Du schon mal kontrolliert, ob die ausgegebene session_id auf der zweiten Seite die gleiche ist wie jene auf der ersten?

        ja, beide IDs sind identisch. ... Kann man auf diese Weise überhaupt Variablen weitergeben oder muss man das trotzdem per URL machen?

        Nein, es ist nicht notwendig per URL zu übergeben. "Bei mir" funktioniert das wie Du Dir das vorstellst. Vielleicht hängt es mit Einträgen in der php.ini zusammen. Die hat einen eigenen Abschnitt zu sessions. Wenn Du willst poste oder verlinke (phpinfo.php) Deine Einträge, ich vergleiche dann mit meinen.

        Beste Grüße
        Viennamade

        1. Hallo,

          Nein, es ist nicht notwendig per URL zu übergeben. "Bei mir" funktioniert das wie Du Dir das vorstellst. Vielleicht hängt es mit Einträgen in der php.ini zusammen. Die hat einen eigenen Abschnitt zu sessions. Wenn Du willst poste oder verlinke (phpinfo.php) Deine Einträge, ich vergleiche dann mit meinen.

          Das ist sehr nett von Dir, aber nicht nötig. Das hab ich mir vorher auch schon gedacht und die Session-Sektion in meiner TEST-php.ini mit der meines Providers verglichen. Sie waren vollkommen identisch.

          Es ist Zum-Aus-Der-Haut-Fahren...

          Dankende Grüsse,

          Philipp

          1. Hello,

            bei solch absonderlichen Problemen empfiehlt es sich immer, die Versionsnummer der verwendeten PHP-Version und/oder einen Link auf eine phpinfo-Seite deiner Installation mitzuteilen, sowie Namen und Version des OS.

            Bitte bau in beide Seiten NACH allen Zuweisungen mal ein:

            echo "<pre>";
            echo "<strong>$_SESSION</strong><br />\n";
            print_r($_SESSION);
            echo "<hr><strong>$_COOKIE</strong><br />\n";
            print_r($_COOKIE);
            echo "</pre>";

            Dann weißt Du wenigstens, ob die Sessioninformation wieder ankommt.

            Und um zu testen, was sonst so kneift am Anfang jedes Scriptes:

            ini_set("display_errors","1");
            error_reporting(E_ALL);

            Dann sollte es wenigstens mal Fehlermeldungen geben. Ich könnte mir z.B. vorstellen, dass das System im vorgegebenen session.save_path (php.ini) nicht schreiben darf. Dann gehen die Sessiondaten natürlich verloren, sollte aber eigentlich eine Fehlermeldung auf dem Schirm geben.

            Liebe Grüße aus http://www.braunschweig.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
  2. Hallo miteinander,

    Hallo,

    Ich erzeuge mit PHP eine SESSION (mein erstes Mal ;)) und möchte einige Datgen im Sessionarray an eine andere Seite weitergeben. Nur leider scheint er nur die Session-ID weiterzugeben.

    Session wird gestartet:

    <?

    PFUI!
    Das heisst "<?php", und das ist nicht nur eine Sache des"Stils" sondern bald wird das so wie du es machst von PHP nicht mehr unterstützt und dann geht keines deiner Scripte mehr...

    session_start();
      header("Cache-control: private");

    $_SESSION['user'] = 'OnkelDuck';

    Falls du das später ONKELDUCK durch eine Variable ersetzen willst, mache bitte "" statt '' sonst gehts nicht ;)

    Probiers mal mit session_register();

    echo "<head>";
      echo "<meta http-equiv="refresh" content="1; URL=http://www.ichbineineblume.de/user/index.php4">";
      echo "</head>";

    das wird nicht mit Umbruch ausgegeben
    und es ist elegenter und Zait-und arbeitssparender wenn du echo ''; über mehrere Zeilen machst und dann musst du nicht alle """""'s backslashen
    also so:
    echo '
    Bla
    bla2
    undnocheinbla
    ';
    Dann Siehts nachher auch in der HTML-Ausgabe ordentlicher aus.

    ?>

    ... und auf dieser Folgeseite der Benutzer angezeigt:

    <?
      session_start();
      header("Cache-control: private");   //IE 6 Fix

    echo "USER:";
      echo $_SESSION['user'];
      echo session_id();

    Wie oben, mehrzeilig...

    ?>

    nur leider zeigt mir das Skript nur die Session-ID an, der Eintrag "user" im Session-Array scheint verloren zu sein :(
    Ich bin für jeden Tip dankbar,

    Also, noch 1 weiteren Tipp:

    Versuch mal auf der ausgabeseite folgendes:

    echo "<pre>Inhalte:--><b>\n\n\n".print_r($_SESSION)."</b>\n\n\n<--</pre>Wenn da was drinsteht, weisst du wenigstens, dass es IM SessionArray gespeichert ist und es vielleicht am Ausgabescript liegt.

    Und wenn alles nichts hilft:

    Entferne ALLE sonstigen Codeteile und probier das Scrip

    Wenns dann immernochnicht geht, schreibe die paar Zeielen KOMPLETT neu, das hilft oft ;)

    Mit freundlichen Grüßen.

    (Mein name tut in diesem Forum nichts zur Sache)

    1. Bitte schau auch mal, in den Quelltet, durch ein eingerücktes < oder " kann es sein, dass etwas bei der Ausgabe verschwindet...

      (Beispiel: "USER:<duckente" als Ausgabe zeigt im Browser lediglich "USER:")

      Mit freundlichen Grüßen.

      (Mein name tut in diesem Forum nichts zur Sache)

    2. Hallo Mntidfnzs,

      <?
      PFUI!
      Das heisst "<?php", und das ist nicht nur eine Sache des"Stils" sondern bald wird das so wie du es machst von PHP nicht mehr unterstützt und dann geht keines deiner Scripte mehr...

      das wäre mir neu, dass die Option short_open_tag gestrichen wird ... (was natürlich nicht heißt, dass man nicht <? verwenden soll)

      $_SESSION['user'] = 'OnkelDuck';
      Falls du das später ONKELDUCK durch eine Variable ersetzen willst, mache bitte "" statt '' sonst gehts nicht ;)

      Was soll den das? Wenn ich $_SESSION['user'] eine Variable zuweisen will, lösche ich einfach das 'OnkelDuck' und schreibe meine Variable hin ...

      Probiers mal mit session_register();

      nein. session_register() sollte nicht mehr verwendet werden, da es bei register_globals=off nicht funktioniert (siehe http://www.php.net/session_register).

      echo "</head>";
      das wird nicht mit Umbruch ausgegeben

      na und?

      Grüße aus Nürnberg
      Tobias

      --
      Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
  3. Hallo,

    vielen Dank für Eure zahlreichen Antworten. Nachdem ich mich gestern abend noch totgetestet habe, war ich echt sher verzweifelt.
    Heute morgen hab' ich's mal auf einen anderen Server aufgespielt und das Skript hat funktioniert!

    Es muss wohl an der Konfiguration des PHPs auf meinem Tetserver gelegen haben oder an der betagten Versin des PHP (4.0.6).
    Merkwürdig dabei ist ja, dass ich die Infos der phpinfo() mit denen des anderen Servers verglichen habe --> sie sind identisch.

    Ich hoffe, Ihr reisst mir jetzt keinen Kopf ab ;)
    Dennoch vielen Dank!

    Beste Grüsse,

    Philipp

    1. Moin!

      Es muss wohl an der Konfiguration des PHPs auf meinem Tetserver gelegen haben oder an der betagten Versin des PHP (4.0.6).

      Natürlich hat es am betagten PHP gelegen. Die Schallgrenze bei PHP ist Version 4.1. Mit allem davor sollte man heutzutage nicht mehr arbeiten, weil sich zwischen 4.0 und 4.1 intern doch so einige Dinge geändert haben, beispielsweise gibts erst seit 4.1 die Variablen $_GET, $_POST, $_SESSION,....

      Merkwürdig dabei ist ja, dass ich die Infos der phpinfo() mit denen des anderen Servers verglichen habe --> sie sind identisch.

      Bis auf die Versionsnummer?

      - Sven Rautenberg