Login übergibt die Session ID nicht

  • Hey.. langsam bin ich echt am verzweifeln..

    Ich habe eine Site auf der man sich registrieren kann.

    Mit dem registrierten Account kann man sich dann im Loginbereich anmelden..

    Funktioniert auch..

    Aber wenn ich mir die DB anschaue... ist die SessionID immer leer.. und wenn ich dann wieder ausloggen steht wieder NULL darin..

    hier mein CODE:

    Loginformular:

    Hier die Sessionhelpers.inc.php

    in der config.php befinden sich nur die Daten zur DB..

    Kann mir bitte jmd. helfen? komme echt nicht weiter

  • Also, ich denke $_COOKIE['PHPSESSID'] wird enthalten,w as du suchst und noch was:

    PHP
    MD5('".$pass."')


    Die Funktion ist zwar gut und schön, jedoch kann man dadurch ein PW entschlüsseln, für standard MD5 hashs gibts Rainbow Tables. Ich würde daher das ganze mit PHP und einem $salt machen

    PHP
    "WHERE password = '".md5($pass, $salt)."'"


    und wenn du 100%ig sicher sein willst, das dein Passwort so schnell nich geknakt wird, kannst du es auch VOR dem versenden durch den Browser mit JS verschlüsseln und dann auf dem Server via PHP nochmals nen MD5 drauf anwenden, nen doppelhash also. Das musste aber beim registrieren auch beachten.

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • PHP
    function check_user($name, $pass) {     $pass=md5($pass); /// ÄNDERUNG    $sql="SELECT ID     FROM hauswurzerkeutz.user     WHERE Name='".$name."' AND Password = '".$pass."'     LIMIT 1";     $result = mysql_query($sql) or die(mysql_error());     if (mysql_num_rows($result)==1)     {         $user = mysql_fetch_assoc($result);         return $user['ID'];     }     else         return false; }

    In diesem fall müsstes du z.B. in jede PHP-Datei mit datenbankverbindung sowas includen

    PHP
    $db=null;$host="localhost";$user="root";$pw="";$base="";$salt="iqpiduöajfösfioeqw";function connect() {    $db=new mysqli($host, $user, $pw, $base);}function disconnect() {    if ($db!=null) $db->close();    $db=null;}

    Dann hättest u immer ne DB-Connection bereit und das Salt überall verfügbar.

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • Funktioniert immer noch nicht richtig..


    Könnte mir jemand von euch vllt ein Link zu nem Script geben,

    wo ich ein Loginbereich, angefangen von der DB Verbindung bis zum Logout, finde ?


    Danke

  • Dashier hab ich mal geschreiben, war mein erstes Tut, soll auch ein Tutorial sein, kein fertiges Script. Einfach lesen, nachvollziehen und dann versuchen, es selbst zu schreiben. Wenn des klappt, müsste login/logout kein Prob. für dich sein.
    http://www.supernature-forum.de/tutorials-and-…erungsmail.html

    P.S.: Ja, in dem Tut hab ich die Sicherheit aussen vor gelassen, sollte übersichtlich werden. Wie du das aber dann einbaust, weisste ja jetzt ;)

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • jetzt wirf doch nicht gleich das Handtuch!
    Dein script ist doch an sich ganz in Ordnung,
    und Debuggen gehört zum Programmieren dazu.
    Ich häng manchmal Tage an eigentlich winzigen Problemen, so ists halt.
    Fang einfach an, isoliere die Stelle, die nicht funktioniert (das hast du ja schon).
    Jetzt lässt du dir über var_dump oder ähnliches die Variablen ausgeben und schaust, ob die stimmen, zusaätzlich noch die Query-fehler abfangen, wie von mir oben beschrieben, dann kommst du dem Fehler schnell auf die Schliche.

    Tobse: Deine Hilfsbereitschaft in allen Ehren, aber du redest am Problem vorbei! Salting hat nichts mit seinem Fehler zu tun, und dann auf dein Tutorial zu verwiesen, wo am Ende nichts anderes rauskommt, als er schon hat, ist auch nicht sonderlich hilfreich.


  • Er wollte ja ein tut xD, Also is mir das eingefallen ;P
    Wie ich vom Salting angefangen hab, dachte ich, die eigentliche Funktion des Logins hätte sich jetzt erledigt ud wprde funktionieren.
    und sorry für des OT zeug.

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • Nunja, du kannst ja einen individuellen Wert über $_SESSION['id']="foo"; machen, aber die tatsächliche Session ID steht in $_COOKIE['PHPSESSID'];

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • Das bedeutet aber nicht, dass die Session bereits gestartet wurde oder? ;P

    D.h. nur das davor bereits ausgabe stattfindet. Musst die Session eben vorher starten.
    Und ich hab den Thread nach "session_start" durchsucht und nichts gefunden.

  • Ich habe ja schon gesagt, dass wenn ich session_start(); eingebe... headers already send.. kommt

    Also wirklich, hättest du das vorher gesagt, dann hätten wir dir sofort gesagt, dass DAS dein Problem ist ;)

    Die Session kann nicht gestartet werden, wenn bereits eine Ausgabe an den Browser gesendet wurde. Das kann auch nur ein Leerzeichen oder html-tag sein.
    Stelle sicher, dass überall, wo die Session genutzt wird, als allererstes

    PHP
    session_start();

    in der ersten Zeile steht.
    Oder du nutzt die php.ini einstellung session.autostart


  • Der erste Kommentar dort ist gleich der richtige dazu:

    Zitat

    Tut mir Leid aber dieses Script ist so nicht wirklich zu gebrauchen.


    Ein ganz simples Beispiel:

    PHP
    <?php
        // nextpage.php
        session_start();
    
        if (isset($_SESSION['vorgekaut']))
           echo "Alles Paletti";
        else
           echo "Du nicht";
    ?>