Login Script - Session auslesen !

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Login Script - Session auslesen !

    Hallo,

    ich habe ein LoginScript in meine Homepage integriert (Script poste ich unten - ist glaube ich von hier) und das Funktioniert auch gut. Macht also was es soll - User ein- und ausloggen.

    Ich möchte aber das der eingeloggte User auf der seite mit Namen begrüsst wird. Also mit "Hallo User".

    Leider bekomme ich nicht raus wie ich welche Variable ansprechen muss um genau das zu erreichen. Ich würde mich über Eure Hilfe freuen.

    Hier der Code :

    sessionhelpers.inc.php

    PHP-Code:
    <?php


    /**
     * @return void
     
    $_access['host'] = 'hab ich'; 
    $_access['user'] = 'ben'; //der benutzername
    $_access['pass'] = 'pw'; //das passwort
    $_access['name'] = 'jep'; //der name der datenbank
     
     */
    function connect () { 
        
    $con mysql_connect('hab ich''ben''pw') or exit(mysql_error());
        
    mysql_select_db('jep'$con) or exit(mysql_error());
    }


    /**
     * @param string $name
     * @param string $pass
     * @return boolean
     */
    function check_user $name$pass ) {
        
    // magic quotes anpassen
        
    if ( get_magic_quotes_gpc() ) {
            
    $name stripslashes($name);
            
    $pass stripslashes($pass);
        }
        
    // escapen von \x00, \n, \r, \, ', " und \x1a
        
    $name mysql_real_escape_string($name);
        
    // escapen von % und _
        
    $name str_replace('%''\%'$name);
        
    $name str_replace('_''\_'$name);

        
    $sql 'SELECT UserId FROM users WHERE UserName = \'' $name '\' AND UserPass=\'' md5($pass) . '\'';
        if ( !
    $result mysql_query($sql) ) {
            exit(
    mysql_error());
        }
        if ( 
    mysql_num_rows($result) == ) {
            
    $user mysql_fetch_assoc($result);
            return ( 
    $user['UserId'] );
        } else {
            return ( 
    false );
        }
    }


    /**
     * @param int $userid
     * @return void
     */
    function login $userid ) {
        
    $sql 'UPDATE users SET UserSession = \'' session_id() . '\' WHERE UserId = ' . ((int)$userid);
        if ( !
    mysql_query($sql) ) {
            exit(
    mysql_error());
        }
    }


    /**
     * @return boolean
     */
    function logged_in () { 
        
    $sql 'SELECT UserId FROM users WHERE UserSession = \'' session_id() . '\'';
        if ( !
    $result mysql_query($sql) ) {
            exit(
    mysql_error());
        }
        return (
    mysql_num_rows($result) == 1);
    }


    /**
     * @return void
     */
    function logout () { 
        
    $sql 'UPDATE users SET UserSession = NULL WHERE UserSession = \'' session_id() . '\'';
        if ( 
    mysql_query($sql) ) {
            exit(
    mysql_error());
        }
    }

    connect();

    ?>
    geschuetzter-bereich.php

    PHP-Code:
    <?php
    session_start
    ();
             
    include_once(
    'sessionhelpers.inc.php');

    echo 
    'Sie sind ';
    if ( !
    logged_in() ) {
        echo 
    'nicht ';
    }
    echo 
    'eingeloggt.<p />';


    if ( !
    logged_in() ) {
        echo 
    '<p><a href="index.php?site=login">Anmelden</a></p>';
    }

    if ( 
    logged_in() ) {
        echo 
    '<p>Gesch&uuml;tzter Bereich';
        

        echo 
    '<p><a href="index.php?site=logout">Ausloggen</a></p>';
    }

    ?>
    MFG
    GR_BuLL3T

  • #2
    Sorry, aber was willst du mit der session_id in der DB?
    $_varname ist kein guter Stil
    SQL Injections werden auch nicht verhindert.


    Mein Tipp:
    In die Tonne mit dem Tutorial.
    Wir werden alle sterben

    Kommentar


    • #3
      Hallo combie,

      danke für Deine Antwort. Leider hilft mir das nicht wirklich weiter.

      Die session_id sollte eigentlich dazu dienen den User als solchen zu erkennen. Das funktioniert scheinbar auch da ich in der DB sehen kann wenn der User ein- oder ausgeloggt ist.

      Jetzt brauch ich bitte "nur" noch Hilfe beim auslesen des Benutzernamens (User)

      Meinste Du kannst mir trotzdem helfen ?

      Kommentar


      • #4
        Ich versuchs mal....

        Speichere nur die UserID in $_SESSION
        Den zugehörigen Namen kannst du dir jederzeit aus der DB holen.
        Fange besser gar nicht mit doppelter Datenhaltung an, zu viele Fußangeln.

        Ignoriere die Sessionid.
        Tust du das nicht, machst du dir ganz fix die Anwendung von regenerate_session_id() kaputt.
        Alternativ: Handel es besser ab, dann kannst du u.U. auch Angriffe erkennen.
        Wir werden alle sterben

        Kommentar


        • #5
          Danke für die Antwort.

          Da dieses Script wie schon geschrieben nicht von mir ist (weil ich es auch überhaupt nicht Schreiben könnte), weis ich leider auch nicht wie ich was ändern könnte um nur die UserID in die $_SESSION zu speichern.

          Aber wenn Du mir schon mal helfen kannst den Namen aus der DB zu holen wäre ich nen schritt weiter.

          Ich würde gerne erstmal alle Bedenken zur Sicherheit beiseite legen wollen. Auch wenn Dir gerade die Nackenhaare hochstehen ;-)

          Kommentar


          • #6
            Auch wenn Dir gerade die Nackenhaare hochstehen ;-)
            Ja, du machst mir Angst!


            Hmm...
            Du solltest deine Erkenntnisse aus mehreren Quellen beziehen.
            Tipp: Google("PHP MySQL Login Tutorial")

            PS:
            Ich lege keinen sonderlichen Wert darauf, dass du mir glaubst!
            (auch wenn ich weiß, dass ich recht habe)
            Wir werden alle sterben

            Kommentar


            • #7
              guck dir mal das hier an: http://www.php-einfach.de/tuts_mysql_login.php
              ist total einfach und wenn du einen User begrüßen willst musst du nur echo $_SESSION["username"][COLOR=#000000][COLOR=#007700] schreiben. Funktioniert super.
              [/COLOR][/COLOR]

              Kommentar


              • #8
                Wie gesagt: Ich mag keine doppelte Datenhaltung!
                Race Conditions lauern allen Ecken.
                Wir werden alle sterben

                Kommentar

                Lädt...
                X