IP + Logindatum in Datenbank
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
code
dank
date
datenbank
ergebnis
fehlermeldung
genau update
http
jemand
login
manual
notation
sagen
sicherheit
statement
tip
update
url
verbindung
verhindern
-
Aus Sicherheitsgründen möchte ich, das bei jedem login eines Users die IP-Adresse gespeichert wird.
<?php $username = $_POST["username"]; $verbindung = mysql_connect("mysql.lima-city.de", "***" , "***") or die("Verbindung zur Datenbank konnte nicht hergestellt werden"); mysql_select_db("***") or die ("Datenbank konnte nicht ausgewählt werden"); $lalo = date("D.m.Y"); $ip = $_SERVER['REMOTE_ADDR']; mysql_query("INSERT INTO login (ip, lastlogin) VALUES ('$ip', '$lalo') WHERE username = '$username'"); ?>
Es kommt keine Fehlermeldung, aber trotzdem wird die IP und das Logindatum nicht gespeichert.
Kann mir bitte jemand sagen, woran es liegt?
Danke in Voraus.
MFG. fuhnefreak -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Änder es doch etwas ab, damit du eine Fehlermeldung bekommst. Also etwa so:
if (!mysql_query(...)) { die(mysql_error()); }
Ich schätze mal, dass du eventuell falsch Datentypen in der Tabelle definiert hast.
Ausserdem würde ich, wenn du schon auf Sicherheit bedacht bist, niemals den Benutzernamen einfach so aus $_POST in eine Query einfügen. Siehe Sql-Injection.
Eine einfache Möglichkeit um das zu verhindern wären Prepared Statements. Siehe Mysqli oder PDO. -
fuhnefreak schrieb:
Erklär mal was du hier vor hast:
Es kommt keine Fehlermeldung, aber trotzdem wird die IP und das Logindatum nicht gespeichert.
Kann mir bitte jemand sagen, woran es liegt?
Das mit dem WHERE verstehe ich nicht...mysql_query("INSERT INTO login (ip, lastlogin) VALUES ('$ip', '$lalo') WHERE username = '$username'");
Meinst du etwa UPDATE? -
Ja genau! Update wars!
Vielen Dank!
Ausserdem würde ich, wenn du schon auf Sicherheit bedacht bist, niemals den Benutzernamen einfach so aus $_POST in eine Query einfügen. Siehe Sql-Injection.
Eine einfache Möglichkeit um das zu verhindern wären Prepared Statements. Siehe Mysqli oder PDO.
Danke für den Tipp aber ich habe den Quelltext schon andersweitig gesichert Ich habe hier nur eine sehr abgespeckte Variante reingestellt.
Beitrag zuletzt geändert: 24.5.2012 10:25:52 von fuhnefreak -
fuhnefreak schrieb:
und wenn du irgendwann einmal nach ip sortieren solltest, kannst mit dot-quad-notation das nicht machen. für den fall solltest die zwei beispiele mal ansehen
Ja genau! Update wars! ...
ergebnis = 209654088 :: so abgespeichert kann man die ips wie gewohn (richtig) sortieren!SELECT INET_ATON('12.127.17.72')
und die rückwandlung geht so:
ergebnis = 12.127.17.72SELECT INET_NTOA(209654088)
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage