Login-system

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

  • Login-system

    Hi Leutz,

    ich hab ein kleines Problem mit nem Login-System dass ursprünglich aus dem Codeschnipsel-Forum stammt!
    Hab schon überall hier nach ner Lösung gesucht und mir mal alle Login-scripte angeschaut aber ich fin die Lösung nicht! Sorry dass der Betreig so lang ist aber kürzer geb glaub net.

    EDIT:
    Anmerkung: Beim Login funktioniert Alles, kommen keine Fehler! Allerdings habe ich durch eine Fehlerabfrage in der function login_ok() in class.checkin.php herausgefunden, dass die Werte in der function login() nicht registriert werden oder zumindest in der function login_ok() nicht ankommen... why?

    Bitte helft mir! Ich weiß steht viel hier aber das Prob is sicher simpel...
    Hoffe ihr könnt mir helfen!
    Wäre euch sehr dankbar!



    Zuerst die Dateien:

    checkin.php (Zum Login)

    PHP-Code:
    <?php
    session_start
    ();
    include_once(
    "inc/display_functions.php");
    if(!isset(
    $_POST['username']) || !isset($_POST['password'])){
            
        
    display_LoginForm();
    }
    else{
        include_once(
    "inc/connect2db.php");
        include_once(
    "inc/base_functions.php");
        include_once(
    "inc/class/class.checkin.php");
        
    $User = new member();
        
    $User->member_open();
        
    $User_OK $User->check_user($_POST['username'],$_POST['password']);
        if(
    "OK" == $User_OK){
            
    $User->login();
            
    $User->member_close();
            unset(
    $User);
                    
    header("location:usrmrg.php");
            die;
        }
            else{
            
    $User->kill_session();
            echo(
    "<div align=\"center\" class=\"err_msg\">$User_OK</div>");
            
    display_LoginForm();
        }
        
    $User->member_close();
        unset(
    $User);
    }
    ?>
    class.checkin.php (nur die wichtigsten funktionen)

    PHP-Code:
    <?php
            Wenn check_user funktionniert hat
    muß diese Methode aufgerufen werden
        
    */
        function 
    login(){
            
    $theId $this->user_data['userid']; 
            
    $sql_query "UPDATE oberstufe_user SET UserSession = '".session_id()."', block_stamp = '0', log_attempts = 0, last_log = now() WHERE userid = $theId";
            
    mysql_query($sql_query,$this->dbcnx);
            
    session_register('userid');
            
    session_register('check_str');
            
    session_register('net');
            
    session_register('user_agent');
            
    session_register('username');
            
    session_register('logDate');
            
    $_SESSION['userid'] = $this->user_data['userid'];
            
    $_SESSION['check_str'] = $this->user_data['check_str'];
            
    $_SESSION['net'] = $this->_mk_net();
            
    $_SESSION['user_agent'] = $_SERVER['HTTP_USER_AGENT'];
            
    $_SESSION['username'] = $this->user_data['username'];
            
    $_SESSION['logDate'] = $this->user_data['last_log'];
        }
    /* .... */
            
    function login_OK(){
            if(!
    session_is_registered('userid') || !session_is_registered('check_str') || !session_is_registered('net') || !session_is_registered('user_agent')){ 
                        
    $err "Fehler 7"
                        return 
    $err;
                    }
            if(
    "" == $_SESSION['userid'] || !is_numeric($_SESSION['userid'])){
                         
    $err "Fehler 1"
                         
    recho $err;
                    }
            
    $sql_query "SELECT UserSession,check_str FROM oberstufe_user WHERE userid = $_SESSION[userid]";
            
    $dbsth mysql_query($sql_query,$this->dbcnx);
            if(
    != mysql_affected_rows($this->dbcnx)) {
                        
    $err "Fehler 2"
                        echo 
    $err;
                    }
            
    $data mysql_fetch_array($dbsth);
            
    mysql_free_result($dbsth);
            if(
    $data['UserSession'] != session_id()){
                        
    $err "Fehler 3"
                        echo 
    $err;
                    }
            if(
    $data['check_str'] != $_SESSION['check_str']){ 
                        
    $err "Fehler 4"
                        echo 
    $err;
                    }
            if(
    $_SESSION['net'] != $this->_mk_net()){ 
                        
    $err "Fehler 5"
                        echo 
    $err;
                    }
            if(
    $_SESSION['user_agent'] != $_SERVER['HTTP_USER_AGENT']){ 
                        
    $err "Fehler 6"
                        echo 
    $err;
                    }
            return 
    true;
        }
        
    ?>
    usrmrg.php

    PHP-Code:
    <?php

    include_once("inc/connect2db.php");
    require_once(
    "inc/base_functions.php");
    require_once(
    "inc/class/class.checkin.php");
    $User = new member();                     /*Neuen Member anlegen */
    $User->member_open();                   /*Datenbankverbindung herstellen */
    if(!$User->login_OK()){                     /*Sehen ob Login OK ist */
    /*Wenn nicht fliegt der gute Junge raus */
        
    $User->kill_session();
        
    $User->member_close();
        unset(
    $User);
            
    header("location:404.php");     /*Unsere Fehlerseite */
        
    die;
    }     
    ?>
    Inhalt /*Zum Beispiel links zum ändern der Userdaten */
    <?php 
    echo $_SESSION['username'];
    echo 
    $_SESSION['userid'];
    ?>
    Mein Problem:
    Wie ihr seht Versuche ich in der Datei usrmrg.php zwei Sessions auszugeben! Allerdings werden mir diese nicht ausgegeben!

    Verändere ich in der Datei checkin.php Zeile 19
    PHP-Code:
     header("location: usrmrg.php"); 
    zu
    PHP-Code:
     include("usrmrg.php"); 
    und entferne aus der Datei usrmrg.php die Zeile
    PHP-Code:
    session_start(); 
    so gibt er mir die die Session-Werte aus !!!

    Was muss ich ändern, damit diese Werteausgabe auch mit dem header-Befehl funktioniert? Brauche das ganze mit dem Headerbefehl, damit ich gleichzeitig mehrere Seiten an unterschiedlichen stellen meiner Seite aufrufen kann, die jeweils geschützt sind und userdaten enthalten!

    Zuletzt geändert von deschmiddi; 10.12.2003, 13:55.
    Geht net gibts net...

  • #2
    schade dass mir keiner antwortet!
    wäre einer der wenigen gewesen, der das script von Ryback zum laufen bekommen hätte...

    ich weiß ja das Zeit kostbar ist und da ziemlich viel steht aber ich bitte trotzdem nochmal um Hilfe... hab ihr viel im Forum gesucht und gelesen und auch daheim viel versucht zu ändern ohne ergebnis!

    Für solche Genies wie z.B. Abraxax dürfte das doch ein leichtes sein

    MFG deschmiddi
    Geht net gibts net...

    Kommentar


    • #3
      wo kann man sich die classes anschauen??
      [color=black] Important: alt bei <img> ist immer erforderlich · Strings richtig trennen/verbinden · Kiddie-Code hat keine Chance[/color]

      Kommentar


      • #4
        Original geschrieben von deschmiddi
        Für solche Genies wie z.B. Abraxax dürfte das doch ein leichtes sein
        danke für die blumen.





        spontane idee.....

        aus der login() schmeiss mal diese zeilen raus.
        PHP-Code:
        session_register('userid');
        session_register('check_str');
        session_register('net');
        session_register('user_agent');
        session_register('username');
        session_register('logDate'); 
        und in der login_OK() mache aus diese zeilen
        PHP-Code:
        if(!session_is_registered('userid') || !session_is_registered('check_str') || !session_is_registered('net') || !session_is_registered('user_agent')){ 
                            
        $err "Fehler 7"
                            return 
        $err
        diese hier.
        PHP-Code:
        if(!isset($_SESSION['userid']) || !isset($_SESSION['check_str']) || !isset($_SESSION['net']) || !isset($_SESSION['user_agent'])){ 
                            
        $err "Fehler 7"
                            return 
        $err
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          @ Abraxax:
          Also dein Vorschlag war schon mal ganz gut! Die ersten Fehlermeldungen sind weg! Die Werte sind also in der Funktion login_ok() gelandet.
          Allerdings werden die Werte immernoch nicht in der usrmrg.php angezeigt!

          Fehlermeldung:
          Notice: Undefined index: username in d:\htdocs\oberstufe\test\usrmrg.php
          Notice: Undefined index: userid in d:\htdocs\oberstufe\test\usrmrg.php

          Das liegt irgentwie an dem header-Befehl in der checkin.php.
          Wenn ich die Datei usrmrg.php statt header mit include ienbinde, dann funktionierts!
          Brauche aber das ganze mit dem Header-Befehl!

          Hast du noch so nen Klasse Einfall?
          Wäre dir sehr dankbar!
          (Man man wo hat der nur so super PHP gelernt *schwärm*)

          @ Tomstig:
          die classe findest du entweder ganz oben in meinem Thread (class.checkin.php)... oder im Codeschnipselforum unter dem Topic Login-System postet by Ryback!

          Gruß deschmiddi
          Zuletzt geändert von deschmiddi; 10.12.2003, 14:02.
          Geht net gibts net...

          Kommentar


          • #6
            in der usrmrg.php fehlt session_start() zu beginn der datei.

            (Man man wo hat der nur so super PHP gelernt *schwärm*)
            - manual gelesen.
            - selber scripte geschrieben
            - nicht dauernd im forum gefragt
            - mich mal selber mit problemen beschäftigt.
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              Was deine Lernmethode angeht so tu ich das auch...
              überall im inet suchen und überall schlau machen!

              Und was meine Frage angeht...
              hab session_start(); drinstehen!

              mir in den hintern tret dass ich das oben im ersten threat net stehen hab...

              tja aber da es ja da steht heißt das, dass es geht immernoch net... und die Fehlermeldungen bleiben! verdammt...

              ich such mal weiter... google gebt jo genug seiten aus

              Sollte dir noch was einfallen, kannstes mir ja schreiben!
              Trotzdem danke für deine Antwort... hat mich schon weitergebracht!
              Geht net gibts net...

              Kommentar


              • #8
                isset()
                empty()
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar


                • #9
                  www.php.net


                  www.schattenbaum.net (etwas veraltet)
                  INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                  Kommentar


                  • #10
                    Nee, die variablen sind net "empty sonst kämen ja wieder die Fehler 1-7...
                    er scheint nur die variablen durch den header net an die usrmrg zu übertragen... warum weiß der Himmel...

                    Schattenbaum kenn ich, da hab ich schon geschaut... werds nochmal bei php.net versuchen aber was ich bis jetzt über header gefunden hab löst das prob net!

                    Trotzdem danke...
                    Geht net gibts net...

                    Kommentar


                    • #11
                      du solltest dich dennoch mal mit den funktionen isset() und empty() vertraut machen.
                      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                      Kommentar


                      • #12
                        ja werd ich nochmal tun obwohl die mir durchaus schon bekannt sind

                        grad www.php.net angeklickt hab!

                        Greetz deschmiddi
                        Geht net gibts net...

                        Kommentar


                        • #13
                          ich habs *lol*

                          einfach:
                          PHP-Code:
                          header("location:usrmrg.php?".SID.""); 
                          ei ei endlich!
                          Das stand aber net im Manual... das könnten die unter header ruhig mal ergänzen *g*

                          jetzt kann ich endlich weiterbauen!
                          Trotzdem danke @ Abraxax... der einzige der hier hilfsbereit ist!

                          MFG deschmiddi
                          Zuletzt geändert von deschmiddi; 10.12.2003, 15:40.
                          Geht net gibts net...

                          Kommentar


                          • #14
                            Original geschrieben von deschmiddi
                            Trotzdem danke @ Abraxax... der einzige der hier hilfsbereit ist!
                            gern geschehen. aber die anderen user hier helfen auch...
                            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                            Kommentar


                            • #15
                              *lol*

                              jetzt tut er dafür die gesperrten Dateien auch anzeigen wenn ich net eingeloggt bin... oh man... das wird wohl noch ne längere Sache!

                              Jetzt muss ich gugge warum das vorher ging und jetzt nimmé...
                              naja werds schon finne!
                              Geht net gibts net...

                              Kommentar

                              Lädt...
                              X