[PHP] Login Problem!

Dieses Thema im Forum "Webentwicklung" wurde erstellt von 3X3X3X3, 11. Dezember 2007 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 11. Dezember 2007
    Login Problem!

    Also ich kämpfe jetzt schon mehrere Stunden an meinen Skript aber habe noch nicht die passende Lösung gefunden!
    Was ich machen will ist simpel..
    ihr seht ja rechts oben das Login.. Name.. Passwort.. sobald ihr auf Login klickt loggt man sich ja praktisch ein und das eigentliche Login Fenster verschwindet und wird duch dieses "Willkommen..." ersetzt..
    das selbe habe ich nun auch vor!

    PHP:
    //Datenbank öffnen und auslesen!

    $link  mysql_connect ( "localhost" , "root" , "" );
    mysql_select_db ( "datenbank" );
    $anfrage  "SELECT * FROM tabelle WHERE Benutzername=' $_POST [ Benutzername ] ' " ;
    $ergebnis  mysql_query ( $anfrage );
    $zeile  mysql_fetch_row ( $ergebnis );


    //Session ungleich true? Dann Login datensatz aufrufen! Wenn bereits eingelogt Benutzer begrüßen!

    if ( $_SESSION [ 'login' ] !=  true )
    {
    echo 
    "<form action='control.php' method='post'>

            <input name='Benutzername' type='text' size='14' maxlength='25'>

            <input name='Passwort' type='password' size='14' maxlength='25'>

            <input type='submit' name='Name' value='Login'>
            <input type='reset' name='Name' value='Delet'>

            </form>"
    ;

    }
    else
    {
             echo 
    "<span class='normal'>Hallo Member </span>"  $_SESSION [ 'Nick' ];
    }


    //Benutzername und Passwort mit der Datenbank vergleichen und Sessions schreiben

    if( $_POST [ Benutzername ]== $zeile [ 3 ] &&  $_POST [ Passwort ]== $zeile [ 6 ])
    {
            
    $_SESSION [ 'level' ] =  1 ;    
            
    $_SESSION [ 'login' ] =  true ;
            
    $_SESSION [ 'Nick' ] =  $_POST [ 'Benutzername' ];
    }
    else
    {
            echo 
    "Falscher Benutzername oder Passwort<br>" ;

    Was ist nun der Fehler meines Kunstwerkes?

    Bei mir steht immer gleich "Hallo Member" und eben leer ansonsten wenn ich mich einlogge verschwindet es und es kommt "Hallo Member Name" wenn ich die seite dann aber wieder refreshe kommt "Hallo Member"...


    Für eine Hilfe gibts ne BW!

    MfG 3x3x3x3
     
  2. 11. Dezember 2007
    AW: Login Problem!

    Du solltest erst mal eine Session starten sonst klappt das nicht

    mfg
     
  3. 11. Dezember 2007
    AW: Login Problem!

    probier mal:
    PHP:
    <? php
        
    class  Login  {
            protected 
    $_mysqlLink ;

            
    //public function __construct($sqlHost,$sqlUser, &$sqlPass, $sqlName) {
            
    public function  __construct ( $sqlHost , $sqlUser $sqlPass $sqlName ) {
                
    //session starten
                
    session_start ();
                
                @
    $this -> _mysqlLink  mysql_connect ( $sqlHost $sqlUser $sqlPass ) or
                exit(
    'Err, mysqldb not found... invalid host, user or pwd' );
                
                
    //$sqlPass = '';
                
    @ mysql_select_db ( $sqlName $this -> _mysqlLink ) or
                exit(
    'Err, mysqldb not found .. invalid name of database' );
            }
            
            public function 
    doLogin () {
                if(isset(
    $_POST [ 'Benutzername' ],  $_POST [ 'Passwort' ])) {
                    
    $username  mysql_real_escape_string ( $_POST [ 'Benutzername' ]);
                    
    $password  md5 ( $_POST [ 'Passwort' ]);
                    
    $query  "
                        select userid
                        from table
                        where 
                            username = '
    { $username } '
                            && password = '
    { $password } '
                    "
    ;
                    @
    $res  mysql_query ( $query $this -> _mysqlLink );
                    if(@
    mysql_num_rows ( $res ) >  0 ) {  //treffer
                        
    $_SESSION [ 'level' ] =  1 ;
                        
    $_SESSION [ 'login' ] =  true ;
                        
    $_SESSION [ 'Benutzername' ] =  $username ;
                        return 
    true ;
                    } else {
                        return 
    false ;
                    }
                } elseif(isset(
    $_SESSION [ 'login' ]) &&  $_SESSION [ 'login' ] ===  true ) {
                    return 
    true ;
                } else return 
    false ;
            }
            
            public function 
    doLogout () {
                
    session_unset ();
            }
            
            public function 
    isLoggedIn () {
                if(isset(
    $_SESSION [ 'login' ]) &&  $_SESSION [ 'login' ] ===  true )
                    return 
    true ;
                return 
    false ;
            }
        }
        
        
    $login  = new  Login ( 'localhost' 'root' '' 'asdf' );
        if(!
    $login -> isLoggedIn ()) {
            if(isset(
    $_POST [ 'login' ])) {
                
    $res  $login -> doLogin ();
                if(!
    $res ) {
                    print 
    '<p>Zugansdaten falsch!</p>'  "\r\n"
                    
    '<form action="'  $_SERVER [ 'PHP_SELF' ] .  '" method="post">'  "\r\n"
                    
    '<strong>Usr</strong><br />'  "\r\n"
                    
    '<input type="text" name="Benutzername" /><br />'  "\r\n"
                    
    '<br/>'  "\r\n"
                    
    '<strong>Pwd</strong><br />'  "\r\n"
                    
    '<input type="password" name="Passwort" />'  "\r\n"
                    
    '<input type="submit" value="login" name="login" />'  "\r\n"
                    
    '</form>' ;
                } else {
                    print 
    "Hallo  { $_SESSION [ 'Benutzername' ]} " ;
                }
            } else {
                print 
    '<form action="'  $_SERVER [ 'PHP_SELF' ] .  '" method="post">'  "\r\n"
                
    '<strong>Usr</strong><br />'  "\r\n"
                
    '<input type="text" name="Benutzername" /><br />'  "\r\n"
                
    '<br/>'  "\r\n"
                
    '<strong>Pwd</strong><br />'  "\r\n"
                
    '<input type="password" name="Passwort" />'  "\r\n"
                
    '<input type="submit" value="login" name="login" />'  "\r\n"
                
    '</form>' ;
            }
        } else {
            print 
    "Hallo  { $_SESSION [ 'Benutzername' ]} " ;
        }
    ?>
    *langeweile hab^^*
     
  4. 11. Dezember 2007
    AW: Login Problem!

    ja hatte ich auch schon probiert!
    aber des muss ja praktisch so sein!

    Eingabefeld (Benutzername, Passwort)
    NUR wenn Benutzer nicht Eingeloggt!

    Dann kommt ja schon das Problem! Wenn ich die anmeldung wegbekommen will, dann muss ich ja vllt extern die Datei einbinden und dann dort ne Abfrage machen! Des würde ich ja auch hinbekommen aber ich wills schwieriger!

    Also ich habe ne Seite mit nem IFRAME.. das IFRAME bindet die Datei zum einloggen ein! Dort muss dann die Abfrage stehen..

    ABER WTF...



    puhhh.. Murdoc-4D ^^
    ziehmlich viel quellcode wo ich nicht kenn!...

    kannste mir des mal erklären?:
    PHP:
    $username  mysql_real_escape_string ( $_POST [ 'Benutzername' ]);
    $password  md5 ( $_POST [ 'Passwort' ]);
     
  5. 11. Dezember 2007
    AW: Login Problem!

    1. injection vermeiden durch eine mysql interne escape funktion
    2. hash vom passwort erstellen
     
  6. 11. Dezember 2007
    AW: Login Problem!

    für was benötige ich den den hash dafür?
     
  7. 11. Dezember 2007
    AW: Login Problem!

    ein login wär ja sinnfrei wenn du nur nach nem benutzernamen gehst, dann kann sich ja jeder einloggen der nen beutzernamen weiss.

    mit dem hash wird einfach das passwort verschlüsselt, das sollte dann auch beim registrieren so in der db gespeichert werden.
     
  8. 11. Dezember 2007
    AW: Login Problem!

    ja okay die hash verschlüsselung ist ja nicht schwer...
    ich hab mir deinen code mal anschaut bissel verändert jetzt gehts aber garnimmer...
    also kommt praktisch immer "Zugangsdaten falsch!"

    PHP:
    <? php

    $sqlHost 
    "localhost" ;
    $sqlUser  "root" ;
    $sqlPass  "" ;
    $sqlName  "homepage" ;

        class 
    Login 
        
    {
             protected 
    $_mysqlLink ;

             public function 
    __construct ( $sqlHost , $sqlUser $sqlPass $sqlName
         {
                
    session_start ();
                
                @
    $this -> _mysqlLink  mysql_connect ( $sqlHost $sqlUser $sqlPass );
                
                @
    mysql_select_db ( $sqlName $this -> _mysqlLink );
             }
            
            public function 
    doLogin () 
        {
                if(isset(
    $_POST [ 'Benutzername' ],  $_POST [ 'Passwort' ])) {
                    
    $username  mysql_real_escape_string ( $_POST [ 'Benutzername' ]);
                    
    $password  md5 ( $_POST [ 'Passwort' ]);
                    
    $query  "
                        select *
                        from user
                        where
                            username = '
    { $username } ' && password = ' { $password } '" ;

                    @
    $res  mysql_query ( $query $this -> _mysqlLink );

                    if(@
    mysql_num_rows ( $res ) >  0
            { 
                        
    $_SESSION [ 'level' ] =  1 ;
                        
    $_SESSION [ 'login' ] =  true ;
                        
    $_SESSION [ 'Benutzername' ] =  $username ;
                        return 
    true ;

                    } else {

                        return 
    false ;
                    }

                    }
                elseif(isset(
    $_SESSION [ 'login' ]) &&  $_SESSION [ 'login' ] ===  true
            {
                        return 
    true ;
                    }
            else return 
    false
        }
            
            public function 
    doLogout () {
                
    session_unset ();
            }
            
                   public function 
    isLoggedIn () 
            {
                    if(isset(
    $_SESSION [ 'login' ]) &&  $_SESSION [ 'login' ] ===  true )
                        return 
    true ;
                        return 
    false ;
                }
           }
        
        
    $login  = new  Login ( 'localhost' 'root' '' '' );
        if(!
    $login -> isLoggedIn ()) {
            if(isset(
    $_POST [ 'login' ])) {
                
    $res  $login -> doLogin ();
                if(!
    $res ) {
                    echo 
    '<p>Zugansdaten falsch!</p>'  "\r\n"
                    
    '<form action="'  $_SERVER [ 'PHP_SELF' ] .  '" method="post">'  "\r\n"
                    
    '<strong>Benutzername</strong><br />'  "\r\n"
                    
    '<input type="text" name="Benutzername" /><br />'  "\r\n"
                    
    '<br/>'  "\r\n"
                    
    '<strong>Passwort</strong><br />'  "\r\n"
                    
    '<input type="password" name="Passwort" />'  "\r\n"
                    
    '<input type="submit" value="login" name="login" />'  "\r\n"
                    
    '</form>' ;
                } else {
                    echo 
    "Hallo  { $_SESSION [ 'Benutzername' ]} " ;
                }
            } else {
                echo 
    '<form action="'  $_SERVER [ 'PHP_SELF' ] .  '" method="post">'  "\r\n"
                
    '<strong>Benutzername</strong><br />'  "\r\n"
                
    '<input type="text" name="Benutzername" /><br />'  "\r\n"
                
    '<br/>'  "\r\n"
                
    '<strong>Password</strong><br />'  "\r\n"
                
    '<input type="passwort" name="Passwort" />'  "\r\n"
                
    '<input type="submit" value="login" name="login" />'  "\r\n"
                
    '</form>' ;
            }
        } else {
            echo 
    "Hallo  { $_SESSION [ 'Benutzername' ]} " ;
        }
    ?> 
    wo liegt der fehler?
     
  9. 11. Dezember 2007
    AW: Login Problem!

    Wenn du dein altes script verwenden willst musst du ja nur überprüfen ob der User schonmals versucht hat sich einzuloggen und wenn nicht zeigst du zeigst du die leere Seite an. Das kannst du ja ganz einfach über ein hidden fild machen.
     
  10. 11. Dezember 2007
    AW: Login Problem!

    mhh habs nochmal probiert.. könntest du mir nachhelfen? also mit dem code?
    danke gibt auch ne fette bw
     
  11. 15. Januar 2008
    AW: Login Problem!

    also ich hab das jetzt alles komplett überarbeitet funktuniert auch wunderbar.. ich habe jetzt aber noch eine frage..
    hier an diesen pc klappt alles wunderbar mit dem einloggen.. sowohl mit dem ie- als auch mit dem ff-browser..
    dann bin ich an mein bruder seinen rechner gegangen habe getestet ob es auch funktioniert und da loggt er sich auch ein.. dann will ich eine aktion wo man nur als benutzer macht anzeigen lassen und er meldet dann gleich das ich wieder ausgeloggt bin!

    komisch.. also er bleibt nicht on loggt sich sofort wieder aus.. bei kollegen war es das problem das es sich dann mal nach 5 minuten inaktivität nach einer aktion ausgeloggt hat?
    aber wieso?

    ich hab das ganze mit $_SESSION['Name'] geschrieben und in den "Memberbereich" prüfe ich immer am anfang der Seite ob der Benutzer noch inerhalb der Session liegt oder nicht..

    Wieso loggt er sich bei manchen direkt wieder nach dem einloggen aus und wieso loggt es sich bei anderen nach 5 Minuten aus?

    Bei hilfe gibts ne BW!
     
  12. 15. Januar 2008
    AW: Login Problem!

    evtl. erlaubt der eine keine session cookies und der andere hat in den einstellungen was umgestellt das session cookies nach 5 min verfallen.
     
  13. 15. Januar 2008
    AW: Login Problem!

    session cookies?
    ich hab halt wenn er sich korrekt angemeldet hat die session zugewiesen und hab dann den namen noch in ein cookie geschrieben das er sich das beim nächsten anmelden merken kann!?
    kommen die zusammen nicht so ganz klar oder wie sietht des aus ?
     
  14. 15. Januar 2008
    AW: Login Problem!

    ja session cookies. das sind die cookies mit der session_id (evtl. kommt dir: PHPSESSID oder SID bekannt vor)

    versuch mal die session_id als param an die links zu hängen und beim load die session mit session_id() wieder zu setzen.

    HTML:
    <a href="index.php?SID=<?php print session_id(); ?>">Index</a>
    PHP:
    <? php session_id ( $_GET [ 'SID' ]);  ?>
     
  15. 15. Januar 2008
    AW: Login Problem!

    mh..
    aber ich habe das so geschrieben und habe das ganze in einer externen datei überprüft

    PHP:
    <? php
    session_start
    ();
    setcookie ( "username" , " $_POST [ Username ] " , time ()+( 3600 * 24 ));
    setcookie ( "passwort" , " $_POST [ Passwort ] " , time ()+( 3600 * 24 ));
    ?>
    ...
    ...
    verbinden mit db
    ...
    und co
    ...
    ...
    <?php
    < input name = 'Username'  type = 'text'  size = '14'  maxlength = '25'  value = '".$_COOKIE[username]."' >
    <
    input name = 'Passwort'  type = 'password'  size = '14'  maxlength = '25'  value = '".$_COOKIE[passwort]."' >

        if(
    $_POST [ Username ]== $zeile [ 0 ] &&  $_POST [ Passwort ]== $zeile [ 1 ])
            { 
                
    $_SESSION [ 'Nick' ] =  $_POST [ 'Username' ];
            }
    nach eingabe geht er auf die selbe datei... überprüft ob er eingeloggt ist und setzt die session..
    dannach wenn er die session korrekt ist läd er eine extere datei rein mit dem "adminbereich"
     
  16. 15. Januar 2008
    AW: Login Problem!

    assoc. arrayaccess mit ' '
    html attribute mit " "

    cookie nur setzen wenn $_POST['password'] && $_POST['username'] gesetzt ist.

    Quakenet/#php Tutorial
     
  17. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.