IP timer via database
Nu heb ik dit
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$date = date("Gi");
$ipadres = $_SERVER['REMOTE_ADDR'];
$result = mysql_query("SELECT tijd FROM IP WHERE ipadres LIKE ".$ipadres." ");
if ( $date - $result['tijd'] < 2) {
echo "Je spamt";
exit();
}
?>
$date = date("Gi");
$ipadres = $_SERVER['REMOTE_ADDR'];
$result = mysql_query("SELECT tijd FROM IP WHERE ipadres LIKE ".$ipadres." ");
if ( $date - $result['tijd'] < 2) {
echo "Je spamt";
exit();
}
?>
Wat ik dus wil bereiken met deze code is dat er gezocht wordt naar een IPadres in de database die hetzelfde is als het IP waarmee er verzonden wordt en dat hij de daarbij horende tijd pakt. Daarna kijkt hij of de huidige tijd - de opgezochte tijd kleiner is dan twee etc etc.
Het probleem is een beetje als volgt : Het werkt niet :p
Gewijzigd op 01/01/1970 01:00:00 door Joshua
bekijk de datum en tijdsfuncties in de handleiding van je database eens...
Als ik kijk hoe het staat in de db staat er : 00:00:18 voor 0:18 (kwart voor 1)
en wanneer ik dan de date("Gi") min de dbtijd doe kan het denk ik niet goed gaan?
Gewijzigd op 01/01/1970 01:00:00 door Joshua
WHERE ipadres LIKE ......
Een ip-adres is een vaste waarde, die zoek je niet met LIKE. En gebruik enkele quotes in je query.
Een LIKE zonder % is altijd fout, daar valt niks aan te LIKE-en. Daarnaast probeer je LIKE altijd te voorkomen, het is dodelijk voor de snelheid van je database. Zeker wanneer je begint met een %, vergeet het idee van snelheid maar.
Vervolgens ga je bij het wegschrijven van een nieuw record naar de database de SQL functie NOW() gebruiken om de huidige datumtijdstempel in het juiste formaat in te voeren.
Bij het controleren of iemand spamt gebruik je tenslotte de database om te checkeck of er records voorkomen die niet ouder zijn dan 2 minuten:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$sql = "
SELECT tijd
FROM ip
WHERE ipadres = '".$ipadres."'
AND time > NOW() - INTERVAL 2 MINUTE
";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br/>In query: '.$sql);
}
elseif(mysql_num_rows($res) > 0)
{
echo 'Je spamt! Je moet 2 minuten wachten...';
}
?>
$sql = "
SELECT tijd
FROM ip
WHERE ipadres = '".$ipadres."'
AND time > NOW() - INTERVAL 2 MINUTE
";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br/>In query: '.$sql);
}
elseif(mysql_num_rows($res) > 0)
{
echo 'Je spamt! Je moet 2 minuten wachten...';
}
?>