Ankündigung

Einklappen
Keine Ankündigung bisher.

Loginscript

Einklappen

Neue Werbung 2019

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

  • Loginscript

    Hallo,

    ich habe mir ein Loginscript gebastelt was folgendermaßen ausschaut:

    http://nopaste.biz/?9329

    Ich hab die Erklärungen im Code geschrieben und ich hoffe meine Vorgehensweise bzw. Denkweise ist richtig. Nur leider klappt da was mit den Cookies nicht und ich weiß einfach nicht was bzw. wo der Fehler steckt kann mir evtl. einer Möglichkeiten vorschlagen woran es liegen könnte? Ich weiß Formulierungen wie "Hier ist mein Script und es funzt net" sind net gut aber ich habs so gut wie es geht versucht zu erklären.

  • #2
    in Zeile 32 verwendest du unterschiedliche Anführungszeichen, vielleicht war's das schon...

    Kommentar


    • #3
      Was für eine Ausgabe erhälst du mit var_dump($_COOKIE)?

      Kommentar


      • #4
        wo müsste ich denn "var_dump($_COOKIE)" einsetzen?

        Kommentar


        • #5
          So ich hab var_dump mal am kurz vo ?> eingesetzt und ich hab folgende Nachricht bekommen:

          array(2) { ["logged"]=> string(17) "intension@gmx.net" ["PHPSESSID"]=> string(32) "7a88b8835d54d54ca49d9c472be1c40b" }

          Nur weiß ich damit leider nichts anzufangen ^^

          Kommentar


          • #6
            na du hast im cookie die emailadresse und die session id gespeichert. btw: meta refresh im code ist nicht sehr schön. löse das besser über header. hatte das problem auchmal und wurde zurecht zurechtgewiesen.

            noch eine frage: wo kommt das $ds['email'] denn her?

            und das hier ist ein topfen:
            $_SESSION['logged'] = $array['email'];
            setcookie("logged", "".$ds['email']."", time()+3600);
            was genau möchtest du denn überhaupt in dem cookie speichern?

            session_start() mitten im code? furchtbar.

            Kommentar


            • #7
              wenn im cookie die email adresse und die session id gespeichert wird ist das falsch bzw. wie lös ich das problem? und wegen dem meta refresh ich wollte schon vorher header benutzen bloß es kommt ja immer der alt bekannte fehler da man den header befehl ja nicht nach html einsetzen darf. wie lös ich das problem?

              Kommentar


              • #8
                dann solltest du deinen code so strukturieren dass nichts ausgegeben wird bevor alles abgehandelt ist. oder einfach die werte in variablen zwischenspeichern und dann ganz unten ausgeben.

                dann wie gesagt
                Zitat von Promaetheus
                noch eine frage: wo kommt das $ds['email'] denn her?

                und das hier ist ein topfen:
                $_SESSION['logged'] = $array['email'];
                setcookie("logged", "".$ds['email']."", time()+3600);
                was genau möchtest du denn überhaupt in dem cookie speichern?

                session_start() mitten im code? furchtbar.

                Kommentar


                • #9
                  ja den fehler hab ich schon korrigiert das müsste setcookie("logged",$array['email']. time()+3600); heißen ^^

                  Kommentar


                  • #10
                    hatte dir doch eh grade den ganzen code geschickt! denn das war nicht der einzige müll im script.

                    Kommentar


                    • #11
                      Jo danke ich hab mir dein Code angeschaut, reinkopiert und verbessert also einige Fehler ausgemerzt und soweit sieht nun der code aus:

                      PHP-Code:
                      <?php 
                      session_start
                      (); 
                      require_once(
                      "../functions/mysql.php"); 

                      if(isset(
                      $_POST['Login'])) { 
                        
                      $error false
                        
                      $email $_POST['email']; 
                        
                      $password md5($_POST['password']); 
                            
                        
                      $query mysql_query("SELECT email, password FROM users WHERE email='$email' AND password='$password'") or die("Fehler: ".mysql_error()); 
                        
                      $data mysql_fetch_assoc($query); 
                            
                        if(
                      $password == $data['password']) { 
                          
                      $_SESSION['email'] = $data['email']; 
                          
                      $_SESSION['password'] = $data['password']; 
                          
                      setcookie("pass"$data['password'], time()+3600); 
                          
                      setcookie("email"$data['email'], time()+3600); 
                        } elseif(
                      $pass != $data['password']) { 
                          
                      $error true
                          
                      $error_desc 'falsches passwort'
                        } 

                      if(isset(
                      $_COOKIE['email'])) { 
                        
                      $error false
                      // nochmals die cookiedaten mit der datenbank abgleichen 
                      // denn ein cookie ist schnell gemacht/kopiert usw. 
                      } else { // nicht ok 
                          
                      $error true;
                          
                      $error_desc 'blabla'


                      if(
                      $error == true) { // error ausgeben wenn vorhanden 
                        
                      echo $error_desc
                      } else { 
                      header("Location:../frontpage/"); 

                      ?>
                      jetzt sollte es ja eigentlich funktionieren nur wenn ihc mich einlogge dann leitet er mit dem befehl "header("Location:../frontpage/"); weiter aber man ist net eingeloggt.

                      Kommentar


                      • #12
                        Zitat von Promaetheus
                        dann solltest du deinen code so strukturieren dass nichts ausgegeben wird bevor alles abgehandelt ist. oder einfach die werte in variablen zwischenspeichern und dann ganz unten ausgeben.
                        sehr löblich

                        Kommentar


                        • #13
                          @zergling: *grins* danke... DU hattest mich damals zurecht zurechtgewiesen. ich lerne ja gern und bin folgsam.

                          @intension: du hast an meinem code ja noch gar nix geändert? die cookieüberprüfung ist noch gleich. auch musst du halt noch gewünschtes an die session übergeben und evtl. die session id weitergeben. du hast NULL geändert (bsp. cookie, $pass/$password, ...)! ich hatte dir ja nur einen denkanstoss und ein grundkonzept geliefert.

                          Kommentar


                          • #14
                            PHP-Code:
                            <?php
                            if($_COOKIE['logged']) { // ... wenn das Cookie "logged" gesetzt wurde dann leite weiter und sende die Nachricht "Login successfull"...

                                
                            echo '<meta http-equiv="refresh" content="1;URL=../frontpage/">';
                                    echo 
                            'Login successfull.";
                            }
                            ?>
                            Kann es sein das dein Fehler in if($_COOKIE['logged']) liegt?
                            Soweit ich weiss bekommt dein Script die Cookies mit den Headern zugeschickt, und wenn du setcookie() anwendest steht für dich die Cookie "logged" noch nicht zur Verfühgung. Diese wird erst beim nächsten Aufruf des Script vom Browser zugeschickt und steht in $_COOKIE['logged'] bereit.


                            Hier eine einfache Demonstration mit Telnet:
                            starte Telnet mit: telnet localhost 80
                            tippe Folgendes ein: GET /test.php HTTP/1.0 2 Mal Enter
                            In test.php steht nur geschrieben setcookie("logged", "blabla@abc.de", 10).
                            Ich bekomme folgende Antwort dann:
                            HTTP/1.1 200 OK
                            Date: Wed, 08 Nov 2006 02:08:05 GMT
                            Server: Apache/2.2.3 (Unix) DAV/2 PHP/5.1.6 mod_apreq2-20051231/2.5.7
                            X-Powered-By: PHP/5.1.6
                            Set-Cookie: logged=blabla%40abc.de; expires=Thu, 01-Jan-1970 00:00:10 GMT
                            Content-Length: 0
                            Connection: close
                            Content-Type: text/html



                            Ich hoffe das lag auch wirklich daran

                            Grüße,
                            GelaMu

                            Kommentar

                            Lädt...
                            X