Login Script bleibt immer eingeloggt!

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

  • Login Script bleibt immer eingeloggt!

    Hi,
    ich habe ein Problem mit meinem Login Script undzwar funktioniert es nicht richtig. Erst kann man sich nicht einloggen und dann falls man mal drinn sein sollte nimma ausloggen.
    Hier erst mal die login.php
    PHP-Code:
    <?php
        
    if(isset($_POST['user']) AND isset($_POST['pass'])) {
            
    $sql "SELECT
                        ID,
                        pass,
                        nick
                    FROM
                        user
                    WHERE
                        nick = '"
    .$_POST['user']."' AND
                        pass = '"
    .md5($_POST['pass'])."';";
            
    $result mysql_query($sql) OR die(mysql_error());
            while(
    $row     mysql_fetch_assoc($result)){
                
    session_start();
                
    $_SESSION['ID']         = $row['ID'];
                
    $_SESSION['pass']         = $row['pass'];
                
    $_SESSION['loggedin']     = 1;
            }
            
    mysql_free_result($result);
        }
            
            if(
    $_SESSION['loggedin'] == 0) {
                
    session_start();
                
    login_formular();
            } else {
                include 
    "admin/admin_menu.php";
            }
        
    ?>
    Und hier der Anfangt der index.php wo überprüft wird ob man eingeloggt ist oder nicht.
    PHP-Code:
    include "inc/config.inc.php";
        if(isset(
    $_COOKIE['SID'])) {    
            
    $sql "SELECT
                        ID,
                        pass
                    FROM
                        user
                    WHERE
                        session = '"
    .$_COOKIE['SID']."';";
            
    $result mysql_query($sql) OR die(mysql_error());
            
    $row mysql_fetch_assoc($result);
            if(
    $row['ID'] == "" AND $row['pass'] == "") {
                    
    session_start();
                    
    $_SESSION['loggedin']     = 0;
            } else {
                    
    session_start();
                    
    $_SESSION['loggedin']     = 1;
                    
    $_SESSION['ID']         = $row['ID'];
                    
    $_SESSION['pass']        = $row['pass'];
                    
    $sql "UPDATE
                                user
                            SET
                                session = '"
    .session_id()."'
                            WHERE
                                ID = '"
    .$_SESSION['ID']."';";
                    
    mysql_query($sql) OR die(mysql_error());
            }
        } else {
            
    session_start();
            
    $_SESSION['loggedin'] = 0;
        }
            
            
    check_ip();
    $rights getrights();
    ?> 
    Und noch die functions.php

    PHP-Code:
    <?php
        
        
    function login_formular() {    
                echo 
    "<form name=\"login\" action=\"index.php?site=login\" method=\"post\">\n";
                echo 
    "    Nick:<br>\n";
                echo 
    "        <input name=\"user\" type=\"text\"><br>\n";
                echo 
    "    Passwort:<br>\n";
                echo 
    "        <input name=\"pass\" type=\"text\"><br>\n";
                echo 
    "            <input name=\"Login\" value=\"Login\" type=\"submit\">\n";
                echo 
    "            <input name=\"Reset\" value=\"Reset\" type=\"reset\" onClick=\"formularreset()\">\n";
                echo 
    "</form>\n";
        }
        
        function 
    check_ip() {
            if(!isset(
    $_SESSION['IP'])) {
                
    $_SESSION['IP'] = $_SERVER['REMOTE_ADDR'];
            }
            if(
    $_SESSION['IP'] != $_SERVER['REMOTE_ADDR']) {
                echo 
    "<br>\n";
                echo 
    "    Sie dürfen nicht die Session von einem\n";
                echo 
    "    anderen User Benutzten.\n";
                echo 
    "<br>\n";
                die();
            } else {
                return 
    1;
            }
        }
        
        function 
    logout() {
                    
    session_destroy();
                    
    setcookie("SID"""time()-100);
                    echo 
    "Du bist nun ausgeloggt<br>\n";
                    echo 
    "<a class=\"admin\" href=\"index.php?site=login\">Neu einloggen!</a>";
        }
        function 
    marquee() {
                
    $sql "SELECT
                            ID,
                            title
                        FROM
                            news
                        ORDER BY
                            datum DESC
                        LIMIT 5;"
    ;
                
    $result mysql_query($sql) OR die(mysql_error());
                while(
    $row mysql_fetch_assoc($result)) {
                    echo 
    "<span class=\"marquee\">\n";
                    echo 
    "|->\n";
                    echo 
    "<a class=\"news_marquee\" href=\"index.php?site=news&amp;news=show&amp;id=".$row['ID']."\">\n";
                    echo 
    $row['title']."</a>\n";
                    echo 
    "<-|\n";
                    echo 
    "</span>\n";
                }
        }
        function 
    getrights() {
            if(
    $_SESSION['ID'] != ""){
                
    $sql "SELECT
                            ID,
                            userid,
                            admin,
                            war,
                            member,
                            cash,
                            news,
                            guestbook
                        FROM
                            user_rights
                        WHERE
                            userid = "
    .$_SESSION['ID'].";";
                
    $result mysql_query($sql) OR die(mysql_error());
                
    $rights mysql_fetch_array($result);
                return 
    $rights;
            }
        }
    ?>
    In der Config wird die PHPID in SID umbenannt und da wird auch die mysql connection vorgenommen.

    wäre echt nett wenn ihr mir helfen könntet. Ist denke ich etwas schwerer mir hierbei zu helfen.

    MfG
    Nascar

  • #2
    wo wird dein cokkie gesetzt?
    schon versucht wie bei session_destroy im beispiel aufgeführt die variablen zuvor zu löschen?

    das tutorial zu login mal angeschaut?

    Kommentar


    • #3
      Hi,
      ich hab mir das tut schon angeguckt nur ist das da doch nit so das wenn man die seite verlässt und zb nach 5tagen noch mal draufgeht das man dann noch eingeloggt ist.
      Das wollt ich nämlich erreichen und weiß nicht wie.

      MfG
      Nascar

      Kommentar


      • #4
        OffTopic:
        @Nascar: Was macht der Werbelink in deiner Signatur? Sowas wird hier nicht so gern gesehen.

        Kommentar


        • #5
          Hi,
          sorry ist raus hab ich nit gewusst :-)

          MfG
          Nascar

          Kommentar


          • #6
            ohne jetzt deine code bis in alle details zerpflückt zu haben

            mein brainstorming:

            benutzer lockt sich ein und wählt aus ob er einen cookie haben möchte für nächstes anmelden (dazu muss der benutzer cookies akzeptieren - ich hab das standartmässig aus) -> falls ja, cokie setzen, ansonsten alles mit z.b. $_SESSION
            benutzer kommt wieder (mit anderer IP) -> testen ob cookie existiert -> falls nicht, hinweis: nicht angemeldet (wie z.b. hier im forum), ansonsten cookie mit datenbank vergleichen (sessionwert ist denke ich ein guter authentifizierungswert) ....

            so würde ich mir ein cookiebasiertes login vorstellen

            Kommentar


            • #7
              Hi,
              genau die selbe idee hat ich und hab ich auch versucht umzusetzen mit dem login da oben^^ aber der wollt nit so richtig

              naja ich werd morgen mal das tut nach arbeiten einmal komplett kopieren und dann mal versuchen mit nem session cookie umzuschreiben.

              MfG
              Nascar

              Kommentar


              • #8
                so viele session_start() in einem Script habe ich noch nie gesehen. Meinst du nicht, dass du nochmals darüber nachdenken sollst, wie man session_start() verwendet? Es ist einfach unübersichtlich und verwirrend.

                Kommentar


                • #9
                  Hi,
                  ja aber irgendwie steig ich ja da selber nimmer durch :-D

                  MfG
                  Nascar

                  Kommentar


                  • #10
                    Tjaaaa.... Abreißen und neu aufbauen heißt es in dem Fall!

                    Kommentar


                    • #11
                      Hi,
                      jau ich hohl schon mal den kran und und das Ordner Fress Tool

                      Ich werd das Login-Script aus dem Tut nachher mal nachbaun und probieren ob ich das dann umgebaut bekomme.

                      MfG
                      Nascar

                      Kommentar

                      Lädt...
                      X