PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : IP beim Login in der DB speichern


theaims
14.07.2006, 14:34:52
Hallo

Ich habe ein Loginscript und möchte bei jedem Login das die Ip vom benutzer in der db gespeichert wird.

Das wollte ich mit dem folgenden Code machen. Doch leider wird nichts in die DB geschrieben:

// Sessionvariablen erstellen und registrieren
$_SESSION["user_id"] = $data["Id"];
$_SESSION["user_nickname"] = $data["Nickname"];
$_SESSION["user_nachname"] = $data["Nachname"];
$_SESSION["user_vorname"] = $data["Vorname"];

header ("Location: intern.php");
}
else
{
header ("Location: formular.php?fehler=1");
$ip = $_SERVER['REMOTE_ADDR'];
$sql = "INSERT INTO log (ip) VALUES ($ip)";
}

Andes
14.07.2006, 14:49:03
Weil du nach $sql kein query hast. Bis jetzt ist $sql nur eine in PHP definierte Variable.
mysql (http://dev.mysql.com/doc/refman/4.0/de/handler.html)
PHP MySql-Funktionen (http://www.selfphp.info/funktionsreferenz/mysql_funktionen/mysql_query.php)

theaims
14.07.2006, 14:59:22
So habe ich das jetzt gemacht. Aber es wird immer noch nichts in die DB geschrieben:

// Sessionvariablen erstellen und registrieren
$_SESSION["user_id"] = $data["Id"];
$_SESSION["user_nickname"] = $data["Nickname"];
$_SESSION["user_nachname"] = $data["Nachname"];
$_SESSION["user_vorname"] = $data["Vorname"];

header ("Location: intern.php");
}
else
{
header ("Location: formular.php?fehler=1");
$ip = $_SERVER['REMOTE_ADDR'];
$sql = "INSERT INTO log (ip) VALUES ($ip)";
$query = mysql_query($sql) or die(mysql_error());
}

xabbuh
14.07.2006, 15:04:17
Wird die Abfrage ausgeführt? Was sagt mysql_error()?

theaims
14.07.2006, 15:11:32
error sagt Column count doesn't match value count at row 1

xabbuh
14.07.2006, 15:42:25
Lass dir die Abfrage ausgeben (http://tut.php-q.net/errorfind.html#f2). Wie sieht diese aus?

theaims
14.07.2006, 15:57:33
Jetzt geht es fast^^

Also es kommt dann:

INSERT INTO log (ip) VALUES (127.0.0.1)

Und weiter kommt weil es ja eigentlich in die Db eingetragen werden müsste das:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.0.1)' at line 1

Ich nehme an er kommt mit den Zahlen von der IP nicht zurecht.

xabbuh
14.07.2006, 16:24:54
Eine IP-Adresse ist eine Zeichenkette und gehört somit in Anführungszeichen bzw. Hochkommata.

theaims
14.07.2006, 16:27:18
Immer noch das gleiche Problem:

$sql = "INSERT INTO log (ip) VALUES '$ip'";

EDIT:

Jetzt kommt das:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''127.0.0.1'' at line 1

theaims
14.07.2006, 16:38:29
Problem gelöst:

Es fehlten an beiden Seiten die ( )

Also:

$sql = "INSERT INTO log (ip) VALUES ('$ip')";