Ik heb hier alleen nog nooit mee gewerkt dus het zou fijn zijn als er een kleine uitleg bij kan.
Bij voorbaart dank.
Mvg,
Tim Kampherbeek
[edit]
Gezien de inhoud van het bericht is deze verplaatst naar een andere sectie gezien het een script verzoek is.
moderator:
Danny Roelofs
[/edit]
?
Onbekende gebruiker
06-01-2008 17:08
Verschillende oplossingen mogelijk. Eén van de mogelijk oplossingen is;
<?php
session_start(); // indien je dit nog niet doet
if (!isset($_SESSION['laatstepost']))
{
// er is nog niks gepost;
$_SESSION['laatstepost'] = 0;
}
if ((mktime()-$_SESSION['laatstepost']) < 5)
{
exit("Je kan maar één keer in de 5 seconden posten");
}
else
{
$_SESSION['laatstepost'] = mktime();
}
// ... afhandeling van je post gaat hier verder
?>
Wanneer je het hebt over 'dubbelpost', komt er al snel een database bij kijken om de data op te slaan. Met een simpele UNIQUE-constraint is dubbele data eenvoudig te voorkomen, met een CHECK-constraint kun je nog veel meer zaken voorkomen. Net wat jij nodig hebt.
Maar ik kan dan nogsteeds heel makkelijk dubbel posten, gewoon uitloggen (waarschijnlijk), want daar doe je (waarschijnlijk) session_destroy();, dan weer inloggen en spammen maar :)
Je hebt een topic ID, user ID en een bericht tekst als er twee of meer records met dezelfde waarde in de database zitten dan is het een dubbelpost.
Van deze kolommen maak je een unieke index.
Om wat ruimte te besparen en de index wat sneller te maken kun je van de bericht tekst een samenvatting maken met sha1().
Op deze manier zorg je ervoor dat een gebruiker niet twee keer een post met dezelfde tekst in een topic kan plaatsen.
[edit]De kolom user ID zou je ook kunnen veranderen door het IP adres. Voor als je gast gebruikers hebt.
Ook zou je de kolom user ID weg kunnen laten uit de index en het IP adres samen met de bericht tekst met sha1() kunnen hashen[/edit]
?
Onbekende gebruiker
06-01-2008 19:16
@Martijn!
Zo voorkom je dat iemand meer als twee keer een bericht plaatst per topic. Dat is een andere invulling van dubbel post.