ToshiOzumi: Session und weiterleitung

Hallo,
ich habe da ein Problem. Ich arbeite gerade an dem Login auf meiner Seite.
Es soll abhängig davon ob es ein Admin oder Mittarbeiter auf die passende Seite weitergeleitet werden.
Dazu würde ich gerne einige Infos über den Angemeldeten in einem sessioncookie speichern. Wenn ich aber die Weiterleitung mit

header("Location: mitarbeiter.php"); mache werden die Daten nicht mitgeliefert.
Wie kann ich eine Weiterleitung bekommen ohne einen Link verwenden?

Ich weiß es ist alles ziemlich wage. Ich wollte mich nur kurz fassen, da der Rest eigentlich funktioniert.
Toshi

  1. Hi,

    Dazu würde ich gerne einige Infos über den Angemeldeten in einem sessioncookie speichern. Wenn ich aber die Weiterleitung mit
    header("Location: mitarbeiter.php"); mache

    ... dann ist das schon mal falsch, weil ein Location-Header einen vollständigen URL *erfordert*.

    werden die Daten nicht mitgeliefert.

    Zu dem Problem hatten wir erst kürzlich eine Diskussion, </archiv/2009/3/t184428/>

    MfG ChrisB

    --
    Light travels faster than sound - that's why most people appear bright until you hear them speak.
    1. Hallo

      ... dann ist das schon mal falsch, weil ein Location-Header einen vollständigen URL *erfordert*.

      ganz so falsch scheint es ja nicht zu sein denn auch auf der PHP Seite so verwendet wird.

      Zu dem Problem hatten wir erst kürzlich eine Diskussion, </archiv/2009/3/t184428/>

      Ja, ich habe es gerade durchgelesen aber es ist nicht ganz so mein Problem.
      Ich habe jetzt von da versucht mit session_write_close(); die Daten in ein Cookie zu schreiben, allerdings hat es nicht zum Erfolg geführt.

      Im Moment ist es so das ich zum Anmelden vier Seiten habe. index.php in der man Benutzernamen und Passwort eingibt, sie dann per Formular
      an login.php weiterleitet. Die login.php vergleicht die Daten mit der SQL Datenbank und authentifiziert den Benutzer. Diese Daten werden
      dann gleichzeitig in die sessens geschrieben. Danach wird man per Location-Header auf die Seite admin.php oder mitarbeiter.php weitergeleitet.
      Wo ich erstmal eine einfache Begrüßung mit dem entsprechenden Namen haben will.

      MfG Toshi

      1. Und wo ist das Problem, da Du eh eine Session hast, die Namen etc. in einer Session zu speichern?

        Gruß
        GermanysNextTopfmodel

        1. Hallo

          Und wo ist das Problem, da Du eh eine Session hast, die Namen etc. in einer Session zu speichern?

          »»
          Ich speichere die Daten in einer Session aber das Problem ist das ich die Daten Verliere, wenn ich per location-Header
          weiterleite. Es ist so das ich die Daten auf der nächsten Seite nicht aufrufen kann. Auch die Prüfung auf empty() sagt mir das da nichts ist.

          hier kurzer Auszug aus dem Code.

          Seite login.php

          <?php
              ini_set("session.use_cookies", 1);
              ini_set("session.use_only_cookies". 1);
              ini_set("session.use_trans_sid", 0);
              session_name("Test2");
              session_start();

          .
          .
          .
             $_SESSION['Name'] = $name;
             $_SESSION['Admin'] = $admin;
             session_write_close();
             if (isset($_POST['pas']) && $_POST['pas'] == $password)
                 {
                   if ($admin == 1)
                   {
                      header("Location: admin.php");
                      exit();
                   }
                   else
                   {
                      header("Location: mitarbeiter.php");
                      exit();
                   }

          }
          .
          .
          .

          und dann der aufruf in z.B. admin.php

          <?php
              ini_set("session.use_cookies", 1);
              ini_set("session.use_only_cookies". 1);
              ini_set("session.use_trans_sid", 0);
              session_name("Test2");
              session_start();
              $name = $_SESSION['Name'];
          ?>
          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
              "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

          <html xmlns="http://www.w3.org/1999/xhtml">

          <head>
            <title>Hello!</title>
          </head>

          <body>

          <?php
              echo("<h1>Admin</h1>");
              echo "<p>Hallo ".$name."!!!</p>";
          ?>

          </body>

          </html>

          Es kommt dann einfach als Ausgabe "Hallo !!!" und nicht der Name denn ich übergeben habe. Ich habe überprüft in der login.php
          ist die variable $name vorhanden und passend gefühlt.

          Toshi

          1. $_SESSION['Name'] = $name;
               $_SESSION['Admin'] = $admin;

            Hast du dir hiermal $_SESSION ausgeben lassen (print_r) ?

            session_write_close();

            Arbeitest Du mit Frames, oder warum hier das schliessen??

            <?php
                ini_set("session.use_cookies", 1);
                ini_set("session.use_only_cookies". 1);
                ini_set("session.use_trans_sid", 0);
                session_name("Test2");
                session_start();

            hier mal nen print_r auf $_SESSION gemacht?

            Gruß
            GermanysNextTopfmodel

            1. Hallo,

              »»    session_write_close();
              Arbeitest Du mit Frames, oder warum hier das schliessen??

              Nee, das war nur ein versuch es zu beheben, so wie es in der
              Diskussion steht die Chris mir vorgeschlagen hat zu lesen.
              Habe aber jetzt den Fehler gefunden. :)

              »» <?php
              »»     ini_set("session.use_cookies", 1);
              »»     ini_set("session.use_only_cookies". 1);
              »»     ini_set("session.use_trans_sid", 0);
              »»     session_name("Test2");
              »»     session_start();

              wenn man mein Code anguckt dann ist das ein Fehler in der
              dritten Zeile, dieses Fehler hat wahrscheinlich eine Ausgabe
              erzeugt, so das ein Cookie nicht mehr ging.

              So schnell kann es gehen.

              Ich danke euch.

              Toshi

    2. Hallo

      So jetzt habe ich eine Lösung gefunden, aber die ist nicht besonders elegant. Also ich nutze
      Funktion Redirect, die für mich ans Location-Header die SID übergibt und somit auch die Daten
      die ich brauche. In der URL Adresse ist jetzt aber die ID zu sehen, was ich eigentlich vermeiden wollte.

      Toshi