Andreas: $_SESSION leer nach submit

Hi,
ich hab ein ähnliches problem wie hier (http://forum.de.selfhtml.org/archiv/2007/2/t145875/#m946590)

und zwar habe ich eine index datei, die mir eine radiobutton-group anzeigt. nach dem submit ruft sie sich selbst auf.

ich hab in der allerersten zeile das session_start() das immer ausgeführt wird, unabhängig vom submit-status.
nun ist meine session variable beim ersten aufruf (formular anzeigen) in ordung, beim zweiten (formular abgeschickt) ist sie leer, bzw. das komplette session array ist leer.

wie kann ich das beheben? hat da jemand ideen?

gruß andreas

  1. Moin!

    wie kann ich das beheben? hat da jemand ideen?

    http://forum.de.selfhtml.org/hilfe/charta.htm#tipps-fuer-fragende

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
    1. ok ok.
      mehr infos:

      <?php
      session_start();
      echo $_SESSION['csl'];
      If ((isset($_POST['submit']){
      -- formular verarbeiten
      }else{
      ?>
      <form enctype="multipart/form-data" action="<?php echo basename($_SERVER['PHP_SELF']); ?>" method="post" name="Upload">
      -- formular anzeigen
      <?php
      };
      ?>

      beim ersten mal steht in $_SESSION['csl'] was drin, das zweite mal nicht.

      Danke und Gruß
      Andreas

      1. Moin!

        ok ok.
        mehr infos:

        Die reichen nicht.

        Wenn dir das Gesamtformular zu groß ist, dann bastel ein Miniformular mit einem Feld, aber in jedem Fall brauchen wir mal den Gesamtquelltext - und zwar einerseits den HTML-Code aus dem Browser, und natürlich auch PHP.

        Und als Anmerkung: Warum basename() in der action des Formulars?

        beim ersten mal steht in $_SESSION['csl'] was drin, das zweite mal nicht.

        Nirgendwo ist Code zu sehen, der dort was reinschreibt.

        Oder anders formuliert: Dein bisheriger Code hat keinen Grund, sich so zu verhalten, wie du beschreibst. Was daran liegen dürfte, dass du zu stark gekürzt hast.

        - Sven Rautenberg

        --
        "Love your nation - respect the others."
        1. ja, tut mir leid. das login formular von dem $_SESSION['csl'] stammt:

          <?php
          if (isset($_POST['submit']) && isset($_POST['csl'])){
           $conn = ldap_connect("xxxxxxx");
           var_dump($conn);
           if ($conn) {
            $result = ldap_search($conn, " ", "log=".$_POST['csl']);
            $entry = ldap_first_entry($conn, $result);
            $dn = ldap_get_dn($conn,$entry);
            If ($dn) {
             if ($_POST['pswd'] == "") {
              echo "Insert password.";
             }else{
              $bind = ldap_bind($conn, $dn, $_POST['pswd']);
              If ($bind) {
               //login succesfull
               session_start();
               $_SESSION['csl'] = $_POST['csl'];
               $_SESSION['dn'] = $dn;
               $profiles = file("users/user.rights");
               foreach($profiles as $user_profile) {
                If(strstr($user_profile, $_POST['csl'])){
                $rights = substr($user_profile, strlen($_POST['csl']."#;#"), strlen($user_profile));
                $rights = explode(";", trim($rights));
                 foreach($rights as $right) {
                  $_SESSION[$right] = TRUE;
                 };
                };
               };
               header("Location: index.php");
              }else{
               echo "Password incorrect.";
              };
             };
            }else{
             echo "User ".$_POST['csl']." does not exist.";
            };
           }else{
            echo "<h4>Connection to LDAP Server failed.</h4>";
           };
          };
          ?>
          <html>
          <head>
          <TITLE>Login</TITLE>
          <LINK rel="stylesheet" type="text/css" href="../JavaScripts/style.css">
          </head>
          <body>
          <form method="POST" action="<?php echo $_SERVER['PHP_SELF'];?>">
          <table align="center" border="1" rules="none">
          <tr>
          <td>CSL:</td>
          <td><input type="text" name="csl"></td>
          </tr>
          <tr>
          <td>Password:</td>
          <td><input type="password" name="pswd"></td>
          </tr>
          <td>
          <td align="center" colspan="2"><input type="submit" name="submit" value="Login"></td>
          </td>
          </form>
          </body>
          </html>

          -----------------

          das formular (html quellcode) das schwierigkeiten macht (gekürzt):
          <html>
          <head>
          <TITLE>Upload</TITLE>
          <LINK rel="stylesheet" type="text/css" href="../../JavaScripts/style.css">
          <script language="JavaScript1.2" src="../../JavaScripts/tree.js" type="text/javascript"></script>
          </head>
          <BODY>
          <form enctype="multipart/form-data" action="upload/index.php" method="post" name="Upload">
          <fieldset>
          <legend><b>Upload File to:</b></legend>
          <ul style="list-style-type:none">
          <li><input type="radio" name="dir" value="Processes">Processes
          <legend><b>File:</b></legend>
          File: <input name="file" type="file">
          <input type="submit" name="submit" value="Upload">
          </fieldset>
          </form>
          </body>
          </html>

          den php code dazu sieht man ja oben, zur formular verarbeitung kommt der code garnicht, eben weil $_SESSION['csl'] leer ist.

          1. Moin!

            den php code dazu sieht man ja oben, zur formular verarbeitung kommt der code garnicht, eben weil $_SESSION['csl'] leer ist.

            Ich denke, auf diese Weise kommen wir nicht weiter. Dein Code ist anscheinend zu groß, um ihn komplett zu posten, und beim Ausschneiden fallen anscheinend die relevanten, interessanten Stellen immer heraus.

            Bleibt also nur Debugging.

            Lass dir Kontrollausgaben liefern:
            echo "<pre">;
            echo "Session\n";
            var_dump($_SESSION);
            echo "\n\nPost\n";
            var_dump($_POST);
            echo "\n\nGet\n";
            var_dump($_GET);
            echo "\n\nCookie\n";
            var_dump($_COOKIE);
            echo "</pre>";

            Damit kriegst du den Gesamtüberblick über alle relevanten Arrays. Wenn aus irgendwelchen Gründen ein Arrayindex 'csl' dort doppelt vorkommt, ist das verdächtig.

            Spannend wäre ansonsten auch noch das Setting von register_globals.

            - Sven Rautenberg

            --
            "Love your nation - respect the others."