pp: Session ID geht verloren

Hallo!

Also ich habe ein
Loginform.php
login.php(skript mit header location:eingeloggt.php)
eingeloggt.php (bei dieser wird vorher noch einmal überprüft ob die Session IDs existieren, und falls nicht echo "session id geht verloren")

ja bis zu dieser "session id geht verloren" komm ich, ich weiß allerdings nicht wie ich mein variablen weitergebe weil eigentlich sind diese ja schon hier definiert:

  
<php  
  $qry="SELECT * FROM kunden WHERE k_mail='$name' AND k_pw='".md5($_POST['password'])."'";  
  $result=mysql_query($qry);  
  
  if($result) {  
    if(mysql_num_rows($result) == 1) {  
      //Login Successful  
	  session_regenerate_id();  
      $kunde = mysql_fetch_assoc($result);  
      $_SESSION['SESS_K_ID'] = $kunde['k_id'];  
      $_SESSION['SESS_K_VN'] = $kunde['k_vn'];  
      $_SESSION['SESS_K_NN'] = $kunde['k_nn'];  
?>  

von dem her müsste ich ja eigentlich mit echo"$_SESSION['SESS_K_ID'] usw das ganze ja auch ausgeben können, so dass im Endeffekt Hallo Vorname Nachname da steht, oder?

ich hoffe ihr wisst was ich meine und ich bitte euch

HELFT MIR!

  1. ach ja und was ich vergessen habe zu sagen ich habe dann noch ne jquery sache im hintergrundlaufen die verhindern soll dass die hrefs aufgemacht werden und das im endeffekt immer nur den inhalt in dem gewünschten div ändert. in diesem fall:

    $('.form').click(function(event){
    var href = $(this).attr('href');
    $('#login').load(href);
    event.preventDefault();
    });

    und dabei habe ich auch eine frage zu dem Form tag meins schaut zu zeit so aus:

    <form name='login' method='post' action='login.php' id='form'>
        <table border='0'>
          <tr>
             <td width='100'>Benutzername <input type='text' size='15' name='name' id='name'/><br/> </td>
          </tr>
            <tr>
             <td width='100'>Passwort  <input type='password' size='15' name='password' id='password'/><br/> </td>
            </tr>
            <tr>
             <td width='100'><a href='login.php' class='form'> <img src='bilder/login.gif' name='submit' border='0'></a> </td>
            </tr>
          </table>
        </form>

    allerdings macht das ganze irgendwas falsch und lädt das login.php 2 mal hinein.

    weiß irgendwie nicht mehr weiter, keine Ahnung, glaub ich steh einfach nur vollkommen auf der Leitung!

    DANKE IM VORAUS FÜR DIE HILFE!

  2. HELFT MIR!

    Mach ich ^^

    Mach mal ein:
    <?php start_session(); ?>

    Ganz oben auf jede Seite wo du die Sessions abrufen willst!

    -+> GreeZz Seta

    --
    Selfcode: sh:( fo:| ch:? rl:? br:< n4:? ie:% mo:| va:) de:> zu:) fl:( ss:) ls:[ js:}
    1. danke aber sorry,
      das ist eh zu, ist ja nur ein teil des ganzen skriptes und hab dann vor lauter Neugier wies denn richtig geht, kein ? gemacht.

      1. Hallo,

        wenn du mit header("location:...") arbeitest, musst du die session-ID per GET weiter reichen.

        bye trunx

        --
        Die Standard-Antwort: "Bitte benutze die Forum-Suche!" macht die Forum-Suche kaputt, weil die Suche dann nämlich genau vor allem diese dämliche Standard-Antwort, also Müll liefert. Sinnvoller ist stattdessen folgende Standard-Antwort: "Dieses Thema wurde schon vielfach im Forum besprochen, siehe z.B. <a>hier</a> oder <a>hier</a> oder benutze die Forum-Suche z.B. mit den Stichworten 'Stichwort1 Stichwort2'." Danke.
        1. Danke Trunk,

          allerdings da es sich um ein Login Formular handelt fällt GET ja leider flach und POST muss her.

          ich schaff es ja dass es mir die richtige ausgabe macht allerdings in einem neuen Fenster und nicht in dem div drinnen, also ich glaube dass ich beim jquery code irgendwas verbockt habe, nachdem ich zum ersten Mal damit arbeite. Aber was?

          1. hi,

            allerdings da es sich um ein Login Formular handelt fällt GET ja leider flach und POST muss her.

            SessionKeys haben in Parametern eigentlich nichts verloren.

            Nimm den Cookie, der nach einem erfolgreichen Login serverseitig erzeugt wird, in den Redirektion-Header und leite auf die Anwendungsseite um, wo bei jeder Action die Gültigkeit der Session geprüft wird.

            Hotte

            --
            Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.
            1. Hotte bitte etwas ausführlicher, komm gerade nicht wie ich das machen soll.
              Hab bisher noch nie was mit Cookies gemacht.

              Woher bekomm ich den Cookie?
              Wie binde ich in den den header?
              Muss ich dann ein Überprüfungsscript schreiben und das immer includen?

              danke

              1. Hotte bitte etwas ausführlicher, komm gerade nicht wie ich das machen soll.
                Hab bisher noch nie was mit Cookies gemacht.

                hi pp,

                in Sachen PHP kann ich Dir leider nicht viel helfen, scheinbar ists da auch so, dass Du die kleinsten Details beim Programmieren gar nicht unbedingt kennen musst, weil es dafür schon weitgehend fix- und fertige Klassen und Methoden gibt.

                Trotzdem ist immer gut, gerade auch die kleinen Details zu kennen und deswegen schreib ich hier mal das Prinzip einer Session auf, die an sich erstmal unabhängig von jeder Programmiersprache ist.

                Wir nehmen mal an, dass es eine Web-Anwendung nur für authentifizierte Benutzer gibt, wofür ein "Login" erforderlich ist. Die Anwendung läge bspw. auf https://example.com/x als solche URL vor. Weitere zur Anwendung gehörige Seiten seien y und z. Die Seiten x, y oder z kann jeder aufrufen, ohne Login jedoch, geht da nix. x,y, und z sind so programmiert, dass ohne eine gültige Session, die einen gültigen Login voraussetzt, keine Aktionen möglich sind.

                Login

                Hugo startet Montagmorgen seinen Browser und tippt https://example.com/x in die Adresszeile ein. Da keine Session vorliegt, erfolgt sogleich eine Umleitung auf das Loginformular. Dort muss Hugo seinen Benutzernamen und ein Passwort eingeben, die sogenannten Credentials. Hugo gibt die ein und klickt auf die Schaltfläche "Anmelden", die ein input type='submit' ist.

                Die Credentials gehen per POST an den Server, dort wartet ein Script, was in <form action="login_script"> notiert ist. login_script vergleicht die Eingabe mit den Credentials, die auf dem Server hinterlegt sind. Das kann in einer DB, einer ActiveDirectory, in LDAP, auf einem RADIUS- oder TACACS+ Server oder in einer Datei sein.

                Ist die Anmeldung nicht ok, kriegt Hugo ein großes Stopschild gezeigt. Ansonsten, im Falle ok, erzeugt login_script einen zufälligen Key, den sogenannten SessionKey, bspw. mit dem Wert 'f8572ff800ccf2c35309e59fe4477015'. Dieser SessionKey ist einmalig und wird (hoffentlich) nicht wieder vorkommen, er soll nämlich nur für diese eine Session gelten. login_script speichert den ebend erzeugten SessionKey in einer DB.

                Cookie setzen und Redirektion

                login_script sendet nun den Cookie und einen Redirection Header, das könnte so gehen:

                print "Set-Cookie: waldemar=f8572ff800ccf2c35309e59fe4477015; path=/; expires=Thu, 19-Apr-2009 12:27:55 GMT\n";
                print "Status: 302 Moved\n";
                print "location: https://example.com/x\n\n";

                Der Cookie hat also den Namen "waldemar" und den SessionKey als Wert sowie ein Verfallsdatum (SessionCookie gelten meist nur für eine Browsersitzung und haben i.d.R. kein 'expires' aus Sicherheitsgründen).

                Hugos Browser nimmt den Cookie an und speichert den im Verzeichnis /FF/Cookies oder so. Der Browser wird dann auf die Anwendung https://example.com/x umgeleitet, die nunmehr offen ist mit Eingabefeldern für Daten, die Hugo eingeben möchte und auch darf, weil Hugo ist autentifiziert und auch autorisiert das zu tun.

                Alles, was Hugo nun mit https://example.com/x, y oder z macht, läuft in einer sogenannten Session. Bei jedem Request an die Seiten x,y,z sendet der Browser den cookie mit, ohne dass das Hugo mitbekommt. Freilich sind die Seiten x,y,z nicht nur reines HTML, sondern ASP, JSP, CGI-Scripts in Perl oder PHP oder sonstige Anwendungen, die activ mit der DB reden können. x,y,z müssen nämlich bei jedem Request, also bei jeder Aktion, die Hugo macht, in den mitgeschickten Cookie gucken, den darin enthaltenen SessionKey auslesen und schauen, ob es diesen Key auch in der DB gibt. Solange das der Fall ist, ist die Session gültig.

                Das ist das ganze Geheimnis einer Session mit Key und cookie, drumherum gibts sicher noch ein bischen mehr zu erzählen.

                Finde Deinen Weg ;)
                Hotte