Zähler für Besucher beim Einloggen hochzählen
Jogi
- datenbank
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
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
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©
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
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©
Das Feld heisst: counter
Du hast ne Lösung ?? (hoff)...
Grüße
Jogi
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©
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
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©
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
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©
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
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©
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
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ß
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