benno: hilfe - gibts das?? login-scripts...

...  m i t  mysql die ich schreib oder downloade sind alle voll mit bugs. gibts das - angeblich ist das ein einfaches script.

bitte support >> ich stell hier bewusst kein script herein, weil alle scripts fehler zeigen.

ich hab auf 'localhost' (natürlich auf mysql)
eine db angelegt ('login1') und hab dort mehrere spalten angelegt 'name', 'mail', ..., 'user', 'pass' angelegt.

mit login.php will ich cookies setzen und 'user' und 'pass' auslesen und weiterleiten (wenn user und pass OK), aber - wie gesagt - jedes script macht unfug.

ich verstehe das nicht, dabei arbeite ich nichtmal allein an der fehlebehebung, sondern sind schon mehrere dran, die auch nicht wirklich auf eine "grünen zweig" kommen.

kann mir bitte jemand helfen?? z.b.: ein script posten etc.

bitte keine tut-links, ich kenn sie fast alle, sie haben nicht weitergeholfen, ebensowenig die bücher, die ich habe.

  1. Hallo benno,  <- du weißt, was das ist - richtig, eine Begrüßung

    ...  m i t  mysql die ich schreib oder downloade sind alle voll mit bugs.

    was verstehst du unter Bugs?

    ich hab auf 'localhost' (natürlich auf mysql)
    eine db angelegt ('login1') und hab dort mehrere spalten angelegt 'name', 'mail', ..., 'user', 'pass' angelegt.

    Ich würde das etwa so machen (Pseudocode):

    ---
    session_start();
    $login = false;
    if($_SESSION['eingelogt'] == 1){ $login = true; }
    else{
      if(name und passwort gesetzt){
        datenbank abfragen (mit WHERE name=$name AND passwort=$passwort)
        //$name bzw. $passwort sind die maskierten Werte aus dem Anmeldeformular
        if(Anzahl der Datensätze aus db-Abfrage == 1){
          $login = true;
          $_SESSION['eingelogt'] = 1;
        }
      }
    }
    if($login){
      //interner Bereich
    }
    else{
      //formular zum Anmelden
    }
    ---

    mit login.php will ich cookies setzen und 'user' und 'pass' auslesen und weiterleiten (wenn user und pass OK),

    auf Cookies würde ich mich nicht verlassen (die können abgeschaltet sein), außerdem müssten dann auf jeder Seite die Datenbank abgefragt werden.

    aber - wie gesagt - jedes script macht unfug.

    definiere "unfug".

    kann mir bitte jemand helfen?? z.b.: ein script posten etc.

    nein. Falls du fertige Scripte erwartest, bist du im falschen Forum - das ist _self_html, nicht _get_html.

    Grüße aus Nürnberg  <- richtig, das nennt sich Verabschiedung
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
    1. hi tobias!

      bug = Käfer, "altertümliche" bezeichnung von leuten mit grossen computern (60er-jahre), wenn der computer (das programm)
      f e h l e r  zeigte. damals waren die comp so groß wie ganze zimmer und waren relais-gesteuert, auf den relais fanden sich dann nicht selten kleine käfer (bugs), die den betrieb störten.

      ich meinte natürlich parse-errors im browser, wenn ich mein login.php fahre. das ist genauso unangenehm, wie käfer auf dem computerrelais.

      ich bin mir bewusst, dass das hier das forum zum helfen und nicht zum posten von scripts ist, die getesteterweise funzen, aber glaub mir, es gibt sie überall und wir rasten schon halbwegs seit etwa 14 tagen aus, weil auf unseren servern nicht geht.

      liebe grüße
      benno

      1. hi,

        ich meinte natürlich parse-errors im browser, wenn ich mein login.php fahre. das ist genauso unangenehm, wie käfer auf dem computerrelais.

        den biologen interessiert die art des käfers, den programmierer die _exakte_ fehlermeldung.

        gruss,
        wahsaga

        1. hi,

          hast recht: also die script zerfallen in 2 scripts: login.php und connect.php; connect.php macht keine probleme, aber das login.php, das ich jetzt poste:

          <?
          require 'connect.php';
          if($logged_in == 1)
          {
          die('Sie sind bereits eingeloggt!,<b> '.$_SESSION['user'].'</b>. Go back <a href = "template2.php">HOME</a>.');
          }
          if(isset($user_Set) and isset($pass_set)){
          header("Location: template2.php");
          mysql_close($con);
          stop;
          }
          if ($var=="login")
          {
          if($user=="" or $pass=="")
          {
          die('Sie haben nicht alle Felder ausgefüllt.');
          }
          $check = "SELECT user, pass FROM data WHERE user='$user'";
          $result = mysql_query($check,$con)
          or die ("invalid query " . mysql_error() );
          $num_rows = mysql_num_rows($result);

          if (!($num_rows))
          {
          die('Dieser UserName existiert leider nicht.');
          }
          $info = mysql_fetch_Array($result);
          if ($pass != $info['pass'])
          {
          die('Falsches Passwort, bitte versuchen Sie es noch einmal (vertippt?).');
          }
          $date = date('m d, Y');
          $update_login = mysql_query("UPDATE users SET last_login = '$date' WHERE user = '".$_POST['user']."'");
          $_SESSION['user'] = $user;
          $_SESSION['pass'] = $pass;
          if (isset($remember_me)) {
          $time_expire = time()+31536000;
          setcookie("user_set", $user, $time_expire);
          setcookie("pass_set", $pass, $time_expire);
          }
          header("Location: template2.php");
          }
          else
          {
          ?>
          <html>
          <head>
          <title>Login</title>
          </head>
          <body>
          <center>
          <table width="250" border="1" cellspacing="0" cellpadding="4" bordercolor="#000000" bordercolordark="#000000" bordercolorlight="#000000" bgcolor="#FFFFFF" style="border-collapse: collapse">
          <tr>
          <td class="updatecontent"><center>
          <form action="login.php?var=login" method="post">
          User<br>
          <input type="text" name="user" maxlength="40"><br><br>
          Password<br>
          <input type="password" name="pass" maxlength="50">
          </center>
          </td></tr>
          <tr><td class="updatefooter">
          <input type="Checkbox" name="Remember_Me"> Remember Me<br>
          <center><input type="submit" name="submit" value="Login">
          </td></tr>
          </table>
          </form>
          <?php
          }
          ?>
          </body>
          </html>
          <?
          mysql_close($con);
          ?>

          da macht er folgende error-meldungen:

          Notice: Undefined variable: logged_in in c:\inetpub\wwwroot\php\login.php on line 3

          Notice: Undefined variable: var in c:\inetpub\wwwroot\php\login.php on line 12

          wir beissen uuns schon die zähne an dem din aus, wo liegt bitte der fehler, was für käfer (biologisch) das waren weiss ich zwar nicht, ich nehme aber an, das hing von der jahreszeit und von der gegend ab, wo der "riesencomputer" stand.

          gruß
          benno

          1. Moin!

            if($logged_in == 1)
            {
            }

            if ($var=="login")
            {
            }

            da macht er folgende error-meldungen:

            Notice: Undefined variable: logged_in in c:\inetpub\wwwroot\php\login.php on line 3

            Notice: Undefined variable: var in c:\inetpub\wwwroot\php\login.php on line 12

            Die Lösung ist simpel: Du erhälst zwei _Hinweise_, dass du an den benannten Stellen zwei Variablen verwendest, die zuvor nicht definiert wurden.

            Das ist in der Hinsicht unschön, als PHP zwar für undefinierte Werte den Leerstring oder Null annimmt, aber an dieser Stelle ein Angreifer vielleicht auch (register_globals = on vorausgesetzt) Werte ins Skript einschmuggeln könnte.

            Deshalb: Prüfe zuerst, ob die Variablen existieren, und vergleiche dann.

            if (isset($logged_in) && ($logged_in=1))

            if (isset($var) && ($var == "login"))

            - Sven Rautenberg

            --
            "Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
            (fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)
            1. b i t t e  sag was in dem script noch fehlt, gelesen und verstanden hab ich den parse-error-Hinweis, aber ich wusste nicht, was ich dagegen tun sollte.

              gruß
              benno

              1. Moin!

                b i t t e  sag was in dem script noch fehlt, gelesen und verstanden hab ich den parse-error-Hinweis, aber ich wusste nicht, was ich dagegen tun sollte.

                Liest du meine Antwort auch _ganz_ durch? Den Code habe ich geschrieben, du bist nur zu doof, ihn zu sehen.

                - Sven Rautenberg

                --
                "Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
                (fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)
                1. kann sein, aber wohin mit den 2 codezeilen.

                  doofe muss man ordentlich anleiten, hab ich von leuten gelernt, die aus deinem holz sind, egal wo man solche anhört, die wollen sich nur wichtig machen. Weisst es gibt bereiche, da hab ich mehr drauf als hier in php, bei trotteln hab ich gelernt, erklärs besser 2x, gell
                  ;-). sonst werden die trotteln noch frech. ich kann mich net erinnern, dass wenn einer mit nem rechtsproblem kam, dass ich ihm dann sagte, er soll in irgendeinem gesetz nachschauen,...

                  gruß
                  benno

                  1. Moin!

                    doofe muss man ordentlich anleiten, hab ich von leuten gelernt, die aus deinem holz sind, egal wo man solche anhört, die wollen sich nur wichtig machen. Weisst es gibt bereiche, da hab ich mehr drauf als hier in php, bei trotteln hab ich gelernt, erklärs besser 2x, gell

                    Ok. Dann will ich mich mal wichtigmachen. Sorry, für dein Problem hab ich deshalb keine Zeit mehr, ich muß weg.

                    - Sven Rautenberg

                    --
                    "Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
                    (fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)
                  2. lieber Benno

                    Weshalb schreibst du plötzlich so arrogant.
                    Lies doch den Beitrag von Sven nochmals, ruhig und langsam durch, am besten von Anfang bis zum Ende. Es ist durchaus gut erklärt, auch für Doofe (!Aber nicht für Faule!)

                    Viel Spass noch

                    Gruss Pascal

                  3. hi,

                    Weisst es gibt bereiche, da hab ich mehr drauf als hier in php, bei trotteln hab ich gelernt, erklärs besser 2x, gell
                    ;-). sonst werden die trotteln noch frech.

                    dann können sich die "trotteln" ihr problem aber anschliessend auch dahin stecken, wo die sonne nicht scheint.

                    gruss,
                    wahsaga

          2. Hallo benno,

            require 'connect.php';
            if($logged_in == 1)

            wo kommt $logged_in her? (dasselbe fragt sich php mit "Notice: Undefined variable: logged_in in [...] on line 3" übrigends auch)

            die('Sie sind bereits eingeloggt!,<b> '.$_SESSION['user'].'</b>. Go back <a href = "template2.php">HOME</a>.');

            ähh.. wieso gibt es einen Fehler wenn jemand schon angemeldet ist?

            if(isset($user_Set) and isset($pass_set)){

            wo kommen die Variablen her?

            header("Location: template2.php");

            das ist kein gültiger header (Du musst eine vollständige URL verwenden).

            mysql_close($con);

            ähh... und wo hast du die Verbindung geöffnet?

            stop;

            was ist denn das?

            if ($var=="login")

            das ist die andere Variable bei der sich php fragt, wo die herkommt.

            if($user=="" or $pass=="")

            auf die Werte die von deinem Formular kommen, stehen in dem Array $_POST (da du method="post" hast), also $_POST['user'] bzw. $_POST['pass'].

            $check = "SELECT user, pass FROM data WHERE user='$user'";
            die Backticks kannst du weglassen, außerdem solltest du Sachen die von außen kommen immer entschärfen (z.B. mit mysql_escape_string())

            $num_rows = mysql_num_rows($result);
            if (!($num_rows))
            Du solltest in deine Query auf "WHERE user=$user AND pass=$pass" prüfen - nur wenn bei diesem Query mysql_num_rows genau 1 ergibt, ist die Name/Passwort-Kombination korrekt.

            die('Dieser UserName existiert leider nicht.');
            die('Falsches Passwort, bitte versuchen Sie es noch einmal (vertippt?).');

            diese Information würde ich nicht ausgeben - es erleichtert potentiellen Angreifern, das Herausfinden von Usernamen - dann kann er in Ruhe das Passwort herausfinden. Wesentlich schwieriger ist es nämlich wenn man nicht weiß, ob es einen Username überhaupt gibt.

            $date = date('m d, Y');
            $update_login = mysql_query("UPDATE users SET last_login = '$date' WHERE user = '".$_POST['user']."'");

            das mit der Funktion date() kannst du dir sparen - dass kann mysql selbst (->http://www.mysql.de/doc/de/Date_and_time_functions.html)

            Grüße aus Nürnberg
            Tobias

            --
            Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
      2. Moin!

        ich meinte natürlich parse-errors im browser, wenn ich mein login.php fahre. das ist genauso unangenehm, wie käfer auf dem computerrelais.

        ich bin mir bewusst, dass das hier das forum zum helfen und nicht zum posten von scripts ist, die getesteterweise funzen, aber glaub mir, es gibt sie überall und wir rasten schon halbwegs seit etwa 14 tagen aus, weil auf unseren servern nicht geht.

        Ok, und nun sollen wir aus der Ferne und ohne jegliche optische Identifikationsmöglichkeit die biologisch korrekte Bezeichnung für deine Krabbeltiere sagen?

        Wie soll das gehen? Wenn Parse-Errors kommen, die du nicht verstehst, dann poste die exakte Fehlermeldung und auch noch den Code um die angegebene Fehlerzeile herum, und dir wird der Grund für den Fehler erklärt werden. Dann kannst du dagegen an arbeiten.

        Ohne Beschreibung keine Hilfe.

        - Sven Rautenberg

        --
        "Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
        (fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)
      3. Hallo benno,

        bug = Käfer, [...] auf den relais fanden sich dann nicht selten kleine käfer (bugs), die den betrieb störten.

        :-)

        ich meinte natürlich parse-errors im browser,

        und wie lauten diese? Wenn du nicht verrätst, wo es hängt (mit Code), kann dir hier auch keiner helfen.

        aber glaub mir, es gibt sie überall und wir rasten schon halbwegs seit etwa 14 tagen aus, weil auf unseren servern nicht geht.

        Tja, dann bleibt euch wohl nichts anderes übrig als euch hinzusetzen, php (eine andere serverseitige Programmiersprache tut es natürlich auch) zu lernen (Links dazu gibts im Archiv - sofern noch nicht geschehen) und schrittweise den Login zusammenzubasteln (wie es etwa aussehen kann, habe ich ja geschrieben) und ggf. konkret nachzufragen wenn es irgendwo hängt.

        Grüße aus Nürnberg
        Tobias

        --
        Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
      4. Hallo,

        hi tobias!

        bug = Käfer, "altertümliche" bezeichnung von leuten mit grossen computern (60er-jahre), wenn der computer (das programm)
        f e h l e r  zeigte. damals waren die comp so groß wie ganze zimmer und waren relais-gesteuert, auf den relais fanden sich dann nicht selten kleine käfer (bugs), die den betrieb störten.

        Zuviel Fernsehen schadet der Bildung. ;) Siehe auch http://dict.leo.org/?search=bug&searchLoc=0&relink=on&deStem=standard&lang=en  http://dict.leo.org/?search=beetle&searchLoc=0&relink=on&spellToler=standard&sectHdr=on&tableBorder=1&cmpType=relaxed&lang=en Und wenn die "Computerheinis" wirklich Käfer (i.Allg.) meinten, dann schadet zuviel Computer ebenfalls der Bildung. ;))

        Gruß Alex

        --
        http://www.google.de/search?hl=de&safe=off&q=Rechtschreibung+Standart
        ss:) zu:} ls:} fo:| de:[ va:| ch:| sh:( n4:& rl:° br:& js:| ie:| fl:| mo:}