Jogi: Zähler für Besucher beim Einloggen hochzählen

Hallo Leute,

versuche gerade krampfhaft folgendes:

Jedesmal wenn sich jemand mit seinem Kennwort einloggt
(MySQL Datenbank) soll der Wert "Besuche" in der Datenbank
um 1 hochgezählt werden.

Ich bekomme aber immer Fehlermeldungen, weil ich während der
Prüfung der Daten kein "UPDATE" einfügen kann.

Wie lässt sich sowas realisieren?

Grüße

Jogi

  1. Hello,

    Jedesmal wenn sich jemand mit seinem Kennwort einloggt
    (MySQL Datenbank) soll der Wert "Besuche" in der Datenbank
    um 1 hochgezählt werden.

    Ich bekomme aber immer Fehlermeldungen, weil ich während der
    Prüfung der Daten kein "UPDATE" einfügen kann.

    Wie lässt sich sowas realisieren?

    Mit einem Update...where und der Auswertung des Resultsets und der Fehlermeldung. "Fehler" ist nichts schlechtes, solange man darauf reagieren kann.

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
  2. Moin Jogi,

    Ich bekomme aber immer Fehlermeldungen, weil ich während der
    Prüfung der Daten kein "UPDATE" einfügen kann.

    bitte zeige uns:

    a) dein SQL Statement
    b) die Fehlermeldung

    regds
    Mike©

    --
    Freunde kommen und gehen. Feinde sammeln sich an.
    1. Hier der Code (ezwas holprig vielleicht)

      <?
      include("dbopen.php");
      $sql = "SELECT * FROM kunden WHERE passwort = '$pass'";
      $result = mysql_query($sql, $conn);
      $number = mysql_num_rows($result);
      if ($number) {
       while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
      ?>
              <p>Vielen Dank,</p>
                           <p>Sie sind jetzt eingeloggt als<b>
      <?
      echo $row[anrede] . " " . $row[vorname] . " " . $row[name];
      }
      } else {
      ?>
      Du kummst hier net rein....
      <?
      }
      ?>

      Soweit so gut: wo mache ich jetzt das Update?

      Grüße

      Jogi

      1. Moin Jogi,

        Du kummst hier net rein....

        da ist der Fehler: Muß heißen:
        Hier kommst Du net rein *LOL*

        Spaß beseite, wie heißt das Feld mit deinem Counter? Dann biegen wir das hin.

        regds
        Mike©

        --
        Freunde kommen und gehen. Feinde sammeln sich an.
        1. Das Feld heisst: counter

          Du hast ne Lösung ?? (hoff)...

          Grüße

          Jogi

          1. Moin

            »» Das Feld heisst: counter

            Du hast ne Lösung ?? (hoff)...

            Bei dieser Lösung wird vorausgesetzt, das keine 2 oder mehrere gleiche Passwörter gibt. Ist zwar unwahrscheinlich, aber könnte vorkommen.

            $sql = "SELECT passwort as valid, counter FROM kunden WHERE passwort = '$pass'";
            $hErgebnis = mysql_query($sql, $conn);

            $result=mysql_fetch_array($hErgebnis)

            $valid_sql=$result['valid'];
            $counter_sql=$result['counter'];

            if ( $valid_sql != 0 )
               {
                   $counter_sql++;

            $sql = "UPDATE kunden SET counter=$counter_sql WHERE passwort = '$pass'";
                   $hErgebnis = mysql_query($sql, $conn);

            ##### Vorausgesetzt der counter ist als integer definiert

            }
             else {

            ..........

            Hingekleckst und ungeprüft, aber das ist  der Weg.

            regds
            Mike©

            --
            Freunde kommen und gehen. Feinde sammeln sich an.
            1. Wow, vielen Dank!!

              Mit valid hat ich's noch gar nicht probiert.
              Ich werde mich gleich ransetzen.

              Danke nochmals für die Mühe.

              *respektvollaufdeineschulterklopf*

              Grüße

              Jogi

              1. Moin Jogi,

                Mit valid hat ich's noch gar nicht probiert.
                Ich werde mich gleich ransetzen.

                Danke nochmals für die Mühe.

                *respektvollaufdeineschulterklopf*

                zufrüh "respektvollaufdeineschulterklopf" du hast es noch nicht getestet.
                Außerdem, "Mit valid hat ich's noch gar nicht probiert"???

                valid ist ein von mir "sinnfreie" erfundene Variable.

                regds
                Mike©

                --
                Freunde kommen und gehen. Feinde sammeln sich an.
                1. yo,

                  zufrüh "respektvollaufdeineschulterklopf" du hast es noch nicht getestet.

                  und damit es auch wirklich funktioniert, sollte man den gewünschten datensatz in der where klausel nicht über das password ansprechen, sondern wenn schon über den namen, der eventuell unique ist. und wenn nicht, direkt über die id des datensatzes gehen. passwörter kommen nämlich in aller regel sehr wohl doppelt vor und es macht auch keinen sinn, einen benutzer darauf hinzuweisen, dass sein gewünschtes schon vergeben ist.

                  Ilja

                  1. Moin Ilja,

                    zufrüh "respektvollaufdeineschulterklopf" du hast es noch nicht getestet.

                    und damit es auch wirklich funktioniert, sollte man den gewünschten datensatz in der where klausel nicht über das password ansprechen, sondern wenn schon über den namen, der eventuell unique

                    hatte ich, so glaube ich erwähnt:
                    https://forum.selfhtml.org/?t=90172&m=540430

                    <Zitier>
                    Bei dieser Lösung wird vorausgesetzt, das keine 2 oder mehrere gleiche Passwörter gibt. Ist zwar unwahrscheinlich, aber könnte vorkommen.
                    </Zitier>

                    und BTW: Ist die Wahrscheinlichkeit, dass der Username mehrfach vorkommt, höher, als das das Passwort mehrfach vorkommt. Beides unsicher.

                    regds
                    Mike©

                    --
                    Freunde kommen und gehen. Feinde sammeln sich an.
                    1. yo,

                      Bei dieser Lösung wird vorausgesetzt, das keine 2 oder mehrere gleiche Passwörter gibt. Ist zwar unwahrscheinlich, aber könnte vorkommen.

                      wie soll den das implementiert werden ? wenn der benutzer nun ein passwort eingibt, dass schon vergeben ist, dann müßte ja eine fehlermeldung geliefert werden, "sorry passwort schon in benutzung". da sagt doch jeder, vielen dank für diese info, ein passwort habe ich damit schon rausgefunden.

                      und BTW: Ist die Wahrscheinlichkeit, dass der Username mehrfach vorkommt, höher, als das das Passwort mehrfach vorkommt. Beides unsicher.

                      es geht dabei nicht um wahrscheinlichkeiten, sondern doppelte benutzernamen zurückweisen zu können, ohne ein sicherheitsloch zu produzieren. und benutzernamen sind in aller regel eh bekannt, passwörter solten es aber nicht sein.

                      Ilja

                      1. Moin Ilja

                        es geht dabei nicht um wahrscheinlichkeiten, sondern doppelte benutzernamen zurückweisen zu können, ohne ein sicherheitsloch zu produzieren. und benutzernamen sind in aller regel eh bekannt, passwörter solten es aber nicht sein.

                        Sagt dir LDAP etwas. Wenn nicht auch OK. Also, es sollte grundsätzlich nur ein LOGIN (Benutzername) geben. Dieser ist eineindeutig. Das PW ist dann sekundär.

                        Gibt es den Buntzernamen schon, ist die Meldung:" Bitte anderen Namen wählen", legitim.

                        Schlüßel ist der Username.

                        Mike©

                        --
                        Freunde kommen und gehen. Feinde sammeln sich an.
                        1. yo,

                          Also, es sollte grundsätzlich nur ein LOGIN (Benutzername) geben. Dieser ist eineindeutig. Das PW ist dann sekundär.

                          Gibt es den Buntzernamen schon, ist die Meldung:" Bitte anderen Namen wählen", legitim.

                          täusch ich mich oder sprach nicht ich davon, dass ein benutzernamen sehr wohl eindeutig (unique) sein kann, im gegensatz aber zu deiner lösung es sichrheitsprobleme gibt, wenn das -> passwort <- eindeutig sein soll ?

                          Ilja

                          1. Heyho Ilja,

                            Also, es sollte grundsätzlich nur ein LOGIN (Benutzername) geben. Dieser ist
                            eineindeutig. Das PW ist dann sekundär.
                            Gibt es den Buntzernamen schon, ist die Meldung:" Bitte anderen Namen wählen", legitim.

                            täusch ich mich oder sprach nicht ich davon, dass ein benutzernamen sehr wohl eindeutig
                            (unique) sein kann, im gegensatz aber zu deiner lösung es sichrheitsprobleme gibt, wenn
                            das -> passwort <- eindeutig sein soll ?

                            Das kann man so nicht sagen :-) An der Hochschule, an der ich studiert habe, wurde bei
                            einem Lehrstuhl ein derart kryptischer Username verteilt, dass ich ihn mir dringend
                            aufschreiben musste (was ich natürlich eigentlich nicht durfte). Das Passwort dagegen
                            war mein Nachname.

                            Schönen Gruß

      2. Hello,

        include("dbopen.php");

        $sql = "SELECT * FROM kunden WHERE passwort = '$pass'";

        Das muss einfach heißen:

        $sql = "update kunden set logcount = logcount+1, lastlog = now() ".
               "where passwort = '".mysql_escape_string(trim($_POST['password']))."'".
               "and loginname = '".mysql_escape_string(trim($_POST['loginname']))."'";

        Und dann wertet man einfach aus, on es ein Reslut gab und genau einen  Datensatz, auf den das zutirfft. Sonst stimmt was nicht.

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau