Spufy: Session Problem

Hi @all,

ich hab ein kleins Problem mit Sessions, ich hab mir das mal alles durchgelesen und ich schein es langsam zu verstehen. Aber es will trotzdem nicht nicht funken. Ich hab ein formular, in dem Daten eingegeben werden (index.html) Diese daten werden dann in einem Formular (main.php) ausgegeben, und dann "sollten" sie wieder in einem Formular ausgegeben werden (main2.php), dass funkt aber nicht ?
Ich verstehe nicht wieso, schaut eucht mal den Code an, vielleicht kann mir jemand helfen, ich bin echt am verzweifeln :(

CODE:

##############

index.html

##############

<html><!-- index.html -->
    <head>
        <title>index.html</title>
    </head>
    <body>
        <form method="GET" action="main.php">
            <p><input type="text" name="formular_name" size="20"></p>
            <p>
                <input type="submit" value="Abschicken" name="B1">
                <input type="reset" value="Zurücksetzen" name="B2">
            </p>
        </form>
    </body>
</html>

##############

main.php

##############

<?php
/** main.php */
@session_start();
$_SESSION["session_name"] = $_GET["formular_name"]

?>

<html>
Im Formular index.html wurde
<?php
echo $_SESSION["session_name"] ."<br>";
echo "Das ist die Session ID: <h1>" .session_id(). "</h1>";
?> <br>
Bitte gehen Sie zu anderen Seite über: <a href="main2.php">weiter</a>
</html>

##############

main2.php

##############

<?php
@session_start();
//$_SESSION["session_name"] = $_GET["formular_name"]
?>

<html>
Im Formular index.html wurde folgendes eingegeben ...
<?php echo $_SESSION["session_name"]; ?>
</html>

  1. Hi,

    Es könnte daran liegen, das du in main.php nach @session_start(); die Variable $_SESSION["session_name"] erst registrieren musst.

    Probiers mal damit:

    @session_start();
    session_register("session_name");
    $_SESSION["session_name"] = $_GET["formular_name"] <-- Hier fehlt auch ein Semikolon in deinem Script.

    mfg

    PHP_Dude

    1. Das funkt auch nicht ...

      1. Das funkt auch nicht ...

        Also bei mir schon.
        Vielleicht liegts ja an Deiner Webserver-Konfiguration.

        1. Also bei mir schon.
          Vielleicht liegts ja an Deiner Webserver-Konfiguration.

          Das kann sein ... Was hast du in deiner PHP.ini eingestellt bzw. was sollte ich den da einstellen ?

          1. das hängt mit der einstellung use_trans_sid zusammen.
            probiere mal <a href="main2.php?<?=SID?>"weiter</a>

            mfg
            andreas

            1. Und sieh Dir das mal an: http://at2.php.net/session

            2. das hängt mit der einstellung use_trans_sid zusammen.
              probiere mal <a href="main2.php?<?=SID?>"weiter</a>

              Wenn ich es so eingeben: <a href="main2.php?<?=SID?>"weiter</a>

              Dann wird mir auf der Page nichts gezeigt ???
              Und wieso funkt es bei PHP_DUDE ???

              1. Hallo,

                Wenn ich es so eingeben: <a href="main2.php?<?=SID?>"weiter</a>
                Dann wird mir auf der Page nichts gezeigt ???

                Das haengt wohl damit zusammen, dass bei Dir die extrem kurze Schreibweise
                nicht funktioniert.
                <script language="php"> /* Code */ </script>
                <?php /* Code */ ?>
                sind am zuverlaessigsten.
                Nur bei gewissen Einstellungen funktioniert auch:
                <? /* Code */ ?>
                <% /* Code */ %>

                <?=SID?>
                ist eine Extrem-Kurzschreibweise fuer
                <?php echo SID ?>

                Versuch's mal damit.

                Zum Nachlesen:
                http://www.php.net/manual/de/language.basic-syntax.php#language.basic-syntax.phpmode

                Gruesse,

                Thomas

                1. Moin!

                  Wenn ich es so eingeben: <a href="main2.php?<?=SID?>"weiter</a>
                  Dann wird mir auf der Page nichts gezeigt ???

                  Das haengt wohl damit zusammen, dass bei Dir die extrem kurze Schreibweise
                  nicht funktioniert.

                  Nö, es hängt damit zusammen, dass nur halbrichtiges HTML ausgegeben wird.

                  HTML: <a href="main2.php?">weiter</a>

                  Plus SID: <a href="main2.php?<?=SID?>">weiter</a>

                  Aktuell:  <a href="main2.php?<?=SID?>"weiter</a>

                  Fehlt also ein ">"

                  Natürlich kann es auch sein, dass die Kurzschreibweise nicht korrekt interpretiert wird, allerdings habe ich in freier Wildbahn noch keinen Server gesehen, der nicht mit den kurzen PHP-Tags zurechtkam. Nun gut, ich schreibe immer die Langform, also ist diese Feststellung nicht wirklich empirisch untermauert... :)

                  - Sven Rautenberg

                  --
                  "Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
                  (fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)
                  1. Also ich hab es mal so versucht:

                    Bitte gehen Sie zu anderen Seite über: <?php echo "<a href='main2.php?=SID'>weiter</a>"?>

                    Aber die Variable wird nicht übergeben :(

                    1. Ich verstehe das nicht ... Es funkt immer noch nicht. Es ist immer noch so, in der main.php der Code ausgegeben wird und in der main2.php der code nicht ausgegeben wird :(
                      Schaut euch mal den Code an:

                      ############

                      main.php

                      ############

                      <?php
                      /** main.php */
                      @session_start();
                      session_register("session_name");
                      $_SESSION["session_name"] = $_GET["formular_name"];

                      ?>

                      <html>
                      Im Formular index.html wurde
                      <?php
                      echo "<b>" .$_SESSION["session_name"] ."</b><br><br>";
                      echo "Das ist die Session ID: " .session_id();
                      ?>
                      <br><br>
                      Bitte gehen Sie zu anderen Seite über: <?php echo "<a href='main2.php?=SID'>weiter</a>"?>
                      </html>

                      #############

                      main2.php

                      #############
                      <?php
                      @session_start();
                      echo "Im Formular index.html wurde";

                      echo "<b>" .$_SESSION["session_name"] ."</b>";
                      echo " eingegeben <br><br>";
                      echo "Das ist die Session ID: " .session_id();

                      ?>

                      1. hallo,

                        dein code den du hier gepostet hast funktioniert bei mir tadellos. ein problem bei dir kann sein, dass dein server nicht richtig konfiguriert ist. am besten du schaust wenn möglich die sachen mal bei deinem webprovider an. wenn es dort funktioniert, dann solltest du anhand der funktion phpinfo() die konfiguration von deinem webprovider und deinem entwicklungssystem überprüfen und abgleichen.
                        überprüfe ob die session_variabel als cookie gesetzt ist oder nicht. außerdem schau die mal das log-file von deinem webserver an. meistens sind dort die fehler gelistet, die einem weiterhelfen.

                        andreas

                        1. überprüfe ob die session_variabel als cookie gesetzt ist oder nicht

                          Wie meinst du das ??? Also der Apache läuft auf einer meiner Linux Maschinen, ich hab da volles zugriff, aber was soll ich da genau änder... ?

                          1. ich meine wenn du die php ab version 4 benutzt solltest du dich nicht mehr um die trans_id einstellung kümmern müssen. also schreibe ein script mit <?php phpinfo();?> und schaue die die settings an. diese muss du mit hilfe einer anleitung, gibt es tausende im internet, so einstellen, daß deine session funktionieren. vielleicht liegt der fehler nur in der session_save variabeln. setzte mal im deinem script session_save_path(string Path) auf ein verzeichnis wo du mit sicherheit schreiben kannst. ansonsten ist es jetzt müßig die konfiguration deines webservers durchzugehen. i.a. ist es mit der info aus phpinfo() und der php.ini recht einfach die sache zu managen. ich würde erstmal den webserver mit einfachen dingen testen, die irgendwo als beispiel angegeben sind.

                            andreas

                    2. Moin!

                      Also ich hab es mal so versucht:

                      Bitte gehen Sie zu anderen Seite über: <?php echo "<a href='main2.php?=SID'>weiter</a>"?>

                      Ist falsch.

                      Innerhalb von doppelten Anführungszeichen erkennt PHP _Variablen_ und ersetzt sie. Variablen beginnen mit einem $-Zeichen.

                      SID ist aber eine Konstante. Die beginnt nicht mit $, sondern einfach mit Text. Es wäre blöd von PHP, jeden Text als Konstante zu behandeln. Deshalb mußt du hier spezielle Vorkehrungen treffen, um die Konstante auszugeben. Unterbreche den String in Anführungszeichen und verkette SID außerhalb der Anführungszeichen:

                      <?php echo "<a href='main2.php?".SID."'>weiter</a>"?>

                      - Sven Rautenberg

                      --
                      "Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
                      (fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)
                    3. Hallo,

                      Bitte gehen Sie zu anderen Seite über: <?php echo "<a href='main2.php?=SID'>weiter</a>"?>
                      Aber die Variable wird nicht übergeben :(

                      Erstens: SID ist keine Variable, sondern eine Konstante.

                      Zweitens: Lerne, wie man mit Strings umgeht!
                      http://www.php.net/manual/en/language.types.string.php

                      Korrekt waere z.B.:
                       <?php echo "<a href='main2.php?=".SID."'>weiter</a>"; ?>
                      oder
                      Bitte ... <a href='main2.php?=<?php echo SID; ?>'>weiter</a>"

                      Gruesse,

                      Thomas

    2. Moin!

      Es könnte daran liegen, das du in main.php nach @session_start(); die Variable $_SESSION["session_name"] erst registrieren musst.

      Nein, falsch. session_register() soll man nicht zusammen mit dem Zugriff auf $_SESSION kombinieren!

      - Sven Rautenberg

      --
      "Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
      (fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)
  2. Moin!

    Ich verstehe nicht wieso, schaut eucht mal den Code an, vielleicht kann mir jemand helfen, ich bin echt am verzweifeln :(

    Laß man alle @-Zeichen vor Befehlen weg! Das @ unterdrückt die Fehlermeldung, auch wenn der Befehl nicht korrekt ausgeführt werden konnte. Auf diese Weise läuft vielleicht nichts, und du kriegst es nicht mit.

    - Sven Rautenberg

    --
    "Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
    (fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)