Hey, da ich ja ne shoutbox hab mit captcha will ich auch nen gscheidn spamsschutz mit ip überprüfung machn, nach einem eintrag soll ein mysql eintrag mit der ip gmacht werdn und nach 10 sek soll er wieder gelöscht werdn?!
wie macht man das?!
gruß wolf360
warum kein timestamp, und via cronejob alle 24 stunden löschen, wäre viel „resourcen“ freundlicher
system
12. August 2007 um 14:34
3
erstel ne extra tabelle mit IP und nem timestamp und dann frag bei eintragen ab
SELECT count(*) FROM shoutbox_ips
WHERE ip
=$_SERVER[‚REMOTE_ADDR‘]
dann wenn du n ergebniss kriegst einfach nicht eintragen ^^
und in den head deiner shoutbox datei kommt das hier
DELETE * FROM shoutbox_ips
WHERE timestamp
>=time() - 10
sollte gehen ^^
alle 24 stundn lösch?! dann kann der ja nur alle 24 stundn nen eintrag machn des is ja viel zu lang xD^^
ich werds so wie slibbo machn!! danke !!!
[I]Edit:
wie is das etz mit dem löschn, des hab ich etz nicht so ganz kappiert?[/I]
[php]
<?php
include("verbindungsaufbau.php");
mysql_select_db("wolf360_03");
$zeit = time();
$eintrag = "INSERT INTO `shoutbox_ips` (`ip`,`timestamp`) VALUES ('".$_SERVER['REMOTE_ADDR']."','".$zeit."')";
$eintragen = mysql_query($eintrag);
$auswahl = "SELECT count(*) FROM `shoutbox_ips` WHERE `ip`=".$_SERVER['REMOTE_ADDR']."";
$auswahl1 = mysql_query($auswahl);
?>
[/php]
also des is etz mal so grob, aber des mit dem 10 sek löschn, hab ich kp?!!
system
12. August 2007 um 17:49
5
[php]<?php
include(„verbindungsaufbau.php“);
mysql_select_db(„wolf360_03“);
mysql_query("DELETE FROM shoutbox_ips
WHERE timestamp
>= ".time() - 10);
$auswahl = „SELECT * FROM shoutbox_ips
WHERE ip
=“.$_SERVER[‚REMOTE_ADDR‘].„“;
$auswahl1 = mysql_query($auswahl);
if(!mysql_num_rows($auswahl1))
{
mysql_query(„INSERT INTO shoutbox_ips
(ip
,timestamp
) VALUES ('“.$_SERVER[‚REMOTE_ADDR‘].„‚,‘“.time().„')“);
// hier trägst du dann alles in die datenbank ein ^^ also die POSTs die übergeben wurden ^^
}
?>[/php]
willst du nicht verstehen oder verstehst du nicht, du fragst alle tabellen ab die in den letzten 10 sekunden erstellt wurden (mit nem timestamp)
und google mal nach „cronejob“, sollte deinem problem vorsorgen …
Google ist dein Freund -
BcF
12. August 2007 um 19:03
7
ich glaube es heißt Cronjob
könnte die Suche erleichtern
okey… danke für die hilfe!!
hab etz mal eine andere methode gmacht—>
[php]
<?php
include("verbindungsaufbau.php");
mysql_select_db("wolf360_03");
$zeitn = time();
$uhrzeitn = date("H:i:s",$zeitn);
$zeit = time() + 20;
$uhrzeit = date("H:i:s",$zeit);
$auswahl = "SELECT * FROM `shoutbox_ips` WHERE `ip`= '".$_SERVER['REMOTE_ADDR']."'";
$auswahl1 = mysql_query($auswahl);
$tester = mysql_num_rows($auswahl1);
$test = mysql_fetch_assoc($auswahl1);
$ausgabe = "SELECT * FROM `tests`";
$ausgaben = mysql_query($ausgabe);
if($test['timestamp'] >= $uhrzeitn){
echo $sicherheit = "Bitte noch warten bis zum nächsten eintrag, du hast grad scho nen eintrag gmacht!";
}
else{
$eintragt = "INSERT INTO `tests` (`name`,`text`) VALUES ('".$_POST['name']."','".$_POST['text']."')";
$eintragenl = mysql_query($eintragt);
if($tester >= 1){
echo "IP wurde aktuallisiert!";
$aendern = "UPDATE `shoutbox_ips` Set `timestamp` = '".$uhrzeit."'";
$aender = mysql_query($aendern);
header ("Location: ".$_SERVER['PHP_SELF']."");
}
else{
$eintrag = "INSERT INTO `shoutbox_ips` (`ip`,`timestamp`) VALUES ('".$_SERVER['REMOTE_ADDR']."','".$uhrzeit."')";
$eintragen = mysql_query($eintrag);
}
}
?>
[/php]
was haltet ihr davon?!
das mit dem nach 24 h löschn mach ich noch…
VALUES (‚„.$_POST[‚name‘].“‘,
jenach webserver biste echt ge*&%* =)
google.de > sql injection …
system
14. August 2007 um 05:46
11
Du musst auch bedenken, dass das Löschen von Einträgen nur funktionieren wird, wenn auch jemand das Script aufruft.
Daher wären cronjobs besser, aber auch nicht alle 10 Sekunden
system
14. August 2007 um 06:30
12
@No0oB : Wenn niemand die seite besucht muss denn was gelöscht werden?
Und was verbraucht eine DELETE anweisung schon für recourcen? die arbeit wird doch vom MySQL server erledigt… man braucht echt nicht für alles cronjobs -.-’
system
14. August 2007 um 20:34
13
Es verbraucht ressourcen immer zu überprüfen wann die 10 sekunden um sind, und diese alle zehn Sekunden zu löschen.
mysql_free_result() müsste da reichen.
Nils aka XraYSoLo