Hab ich gesagt!
PHP-Problem... Zeit
Einklappen
X
-
Bitte NICHT datetime in integer ändern! Please NOT - that's fatal
Hier die Tabellendefinition
Code:mysql> describe IPcontrol; +--------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+----------+------+-----+---------+-------+ | ipadr | char(17) | YES | | NULL | | | timein | datetime | YES | | NULL | | +--------+----------+------+-----+---------+-------+ 2 rows in set (0.00 sec)
PHP-Code:<?php
$dbhost = "localhost";
$dbuser = "";
$dbpw = "";
$dbname = "test";
$lockmin = 1; // Sperre in Minuten
//Verbindungsaufbau zur MySQL
mysql_connect($dbhost,$dbuser,$dbpw)
or print ">>> MySQL-Error: ".mysql_errno()." -> ".mysql_error()."<br>\n";
//Datenbankauswahl
mysql_select_db($dbname)
or print ">>> MySQL-Error: ".mysql_errno()." -> ".mysql_error()."<br>\n";
srand((double)microtime()*648106540098800098);
$endzahl = rand(1,9);
// generell können alle Records gelöscht werden, die älter als n Minuten sind
$DeleteQuery = "delete from IPcontrol where timein < DATE_SUB(now(), INTERVAL $lockmin minute)";
$result = mysql_query($DeleteQuery)
or print ">>> MySQL-Error: ".mysql_errno()." -> ".mysql_error()."<br>\n";
$num_rows = mysql_affected_rows();
if ($num_rows != 0) {
print "Nur zu Deiner Info, ich habe gerade $num_rows abgelaufene Einträge aus der Tabelle entfernt<br>\n";
}
// Jetzt wird überprüft ob es einen Record mit der IP gibt, der in den letzten n Minuten angelegt wurde
$SelectQuery = "select * from IPcontrol
where ipadr = '$_SERVER[REMOTE_ADDR]'
AND timein > DATE_SUB(now(), INTERVAL $lockmin minute)";
$result = mysql_query($SelectQuery)
or print ">>> MySQL-Error: ".mysql_errno()." -> ".mysql_error()."<br>\n";
$num_rows = mysql_num_rows($result);
if ($num_rows == 0) {
// Es exisitier noch keine Eintrag für diese IPAdresse
print "Du mit Deiner IP-Adresse $_SERVER[REMOTE_ADDR] bist neu!<br>\n";
$InsertQuery = "insert into IPcontrol values ('$_SERVER[REMOTE_ADDR]',now())";
$result = mysql_query($InsertQuery)
or print ">>> MySQL-Error: ".mysql_errno()." -> ".mysql_error()."<br>\n";
} else {
print "Du mit Deiner IP-Adresse $_SERVER[REMOTE_ADDR] Dich gibt es schon!<br>\n";
}
Kommentar
-
Dann setz die Sperre auf 15 Minuten, in meinem Skript ist sie noch auf 1 Minute eingestellt, sonst hätte ich mit dem Testen ewig gebraucht
(Abgesehen davon kannst Du noch immer checken, ob es mehrere Einträge mit derselben IP in der Datenbank gibt)
PHP-Code:$lockmin = 15; // Sperre in Minuten
Kommentar
-
Ich kann das leider nicht nachvollziehen. Wenn ich mein Skript nehme und es das allererste mal aufrufe wird folgendes ausgegeben:
Code:Du mit Deiner IP-Adresse 127.0.0.1 bist neu!
Code:mysql> select * from ipcontrol; +-----------+---------------------+ | ipadr | timein | +-----------+---------------------+ | 127.0.0.1 | 2003-01-04 10:54:11 | +-----------+---------------------+ 1 row in set (0.00 sec)
Code:Du mit Deiner IP-Adresse 127.0.0.1 Dich gibt es schon!
Nach Ablauf der Sperrfrist wird folgendes angezeigt:
Code:Nur zu Deiner Info, ich habe gerade 1 abgelaufene Einträge aus der Tabelle entfernt Du mit Deiner IP-Adresse 127.0.0.1 bist neu!
Code:mysql> select * from ipcontrol; +-----------+---------------------+ | ipadr | timein | +-----------+---------------------+ | 127.0.0.1 | 2003-01-04 10:57:56 | +-----------+---------------------+ 1 row in set (0.00 sec)
o Verwendest Du wirklich mein Skript? Da herauskopiert und lediglich Connect-String und DB-Name angepasst?
Ich befürchte, ich kann Dir leider in dieser Sache nicht weiterhelfen denn bei mir funktioniert das ganze fehlerfrei.
Kommentar
Kommentar