• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Log in der DB

newpower001

Mitglied
Hallo,


Habe ein Script indem die IP Adresse und Datum des Zutritts in einer DB abgespeichert wird wenn man die Seite aufruft.
Jedoch entstehen 2 Probleme:

Siehe Bilder:
Problem 1: Ip Adresse wird nicht richtig angezeigt
Problem 2: Das Datum wird immer als 0000:00:00 ausgegeben.

Hier das Script:
PHP:
<?php
$jetzt = time();
echo "Zugriff " . date("d.m.Y H:i:s",$jetzt) . "<br>";

$ip = $_SERVER["REMOTE_ADDR"];
echo "über IP-Adresse: $ip";

$con = mysqli_connect("", "root");
mysqli_select_db($con, "cdcol");
$sql = "insert log (ipaddr) values('$ip')";
mysqli_query($con, $sql);
mysqli_close($con);
?>


Hier die Tabellen-Struktur der Datenbank: Siehe 3. Bild

PS: Im Buch das ich lese ist genau dieses Script vorhanden und genau gleich.
 

Anhänge

  • ip.PNG
    ip.PNG
    3,8 KB · Aufrufe: 6
  • stamp.PNG
    stamp.PNG
    18,6 KB · Aufrufe: 5
  • db.PNG
    db.PNG
    32,6 KB · Aufrufe: 5
Werbung:
Problem 1: Ip Adresse wird nicht richtig angezeigt
Code:
::1
Anstatt 127.0.0.1 wird bei IPv6 die Adresse ::1 verwendet.

Problem 2: Das Datum wird immer als 0000:00:00 ausgegeben.
PHP:
$date = new \DateTime();
echo "Zugriff " . $date->format("Y-m-d H:i:s")  . "<br>";
Entweder befüllst du dein Datumfeld damit oder du setzt als Standard "CURRENT_TIMESTAMP" und ein "ON UPDATE CURRENT_TIMESTAMP".

Ich gehe davon aus das du als Standard "0000-00-00 00:00:00" gesetzt hast und ein "ON UPDATE CURRENT_TIMESTAMP" wie man es auf dem Bild sieht.
 
Hallo,


Habe ein Script indem die IP Adresse und Datum des Zutritts in einer DB abgespeichert wird wenn man die Seite aufruft.
Jedoch entstehen 2 Probleme:

Siehe Bilder:
Problem 1: Ip Adresse wird nicht richtig angezeigt
Problem 2: Das Datum wird immer als 0000:00:00 ausgegeben.

Hier das Script:
PHP:
<?php
$jetzt = time();
echo "Zugriff " . date("d.m.Y H:i:s",$jetzt) . "<br>";

$ip = $_SERVER["REMOTE_ADDR"];
echo "über IP-Adresse: $ip";

$con = mysqli_connect("", "root");
mysqli_select_db($con, "cdcol");
$sql = "insert log (ipaddr) values('$ip')";
mysqli_query($con, $sql);
mysqli_close($con);
?>


Hier die Tabellen-Struktur der Datenbank: Siehe 3. Bild

PS: Im Buch das ich lese ist genau dieses Script vorhanden und genau gleich.


::1 ist deine IPv6 Adresse - 127.0.0.1 war die IPv4.

Du hast als DEFAULT für dein tstamp Feld "0000-00-00 00:00:00".
Richtig wäre CURRENT_TIMESTAMP.
 
Werbung:
Wenn der aufrufende Nutzer IPv6 hat, dann ist das auch seine richtige IP. Du musst hier das nehmen was hier kommt, egal ob IPv4 oder IPv6.
 
Habe grad noch ein Problem und keine Bedarf dafür extra ein neuen Therad aufzumachen.

Wie kann ich mehrer Angaben in einer Db speichern? Bei mir klappt es so nähmlich nicht:
PHP:
<?php
$jetzt = time();
echo "Zugriff " . date("d.m.Y H:i:s",$jetzt) . "<br>";

$ip = $_SERVER["REMOTE_ADDR"];
echo "über IP-Adresse: $ip<br>";
$port = $_SERVER["REMOTE_PORT"];
echo "Port: $port <br>";
$browser = $_SERVER["HTTP_USER_AGENT"];
echo "Browser: $browser <br>";

$con = mysqli_connect("", "root");
mysqli_select_db($con, "daten");
$sql = "insert log (ip) values('$ip')";
$sql .= " insert log (port) values('$port')";
$sql .= " insert log (browser) values('$browser')";
mysqli_query($con, $sql);
mysqli_close($con);
?>
 
Werbung:
Es erscheint keine Fehlermeldung aber es funktoniert nicht. Bzw. es wird kein Datensatz hinzugefügt. Nur mit IP klappt das komischerweise.

PHP:
$sql = "INSERT INTO log (ip,port,browser) VALUES('$ip,$port,$browser')";
or
$sql = "INSERT INTO log (ip,port,browser) VALUES($ip,$port,$browser)";
 
Versuchs mal so
PHP:
INSERT INTO log (ip,port,browser) VALUES('$ip','$port','$browser')

und setz mal:
PHP:
error_reporting(E_ALL);
init_set('display_errors', 1);

Der Name "log" steht in PHP wie woanders auch für Logarithmus. Würde ich jetzt nicht unbedingt verwenden.
 
Zuletzt bearbeitet:
Werbung:
Zurück
Oben