login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[php] Dubbele post tegengaan..

Offline Simax - 05/09/2008 19:11
Avatar van SimaxOnbekend Ik heb een forum geschreven. Nu kunnen gebruikers een nieuw topic aanmaken als ze zijn ingelogd. Zodra alle velden worden ingevuld, word het topic toegevoegd.

Nu is echter het probleem, dat terwijl mensen de pagina refreshen(na het posten van een topic), het topic nogmaals word toegevoegd. Hoe kan ik dit voorkomen?

Simax

8 antwoorden

Gesponsorde links
Offline avdg - 05/09/2008 19:14
Avatar van avdg PHP gevorderde Een unieke key die je meegeeft bij het invullen van een nieuwe topic? 
Offline Simax - 05/09/2008 19:15
Avatar van Simax Onbekend En wat bedoel je dan precies?
Offline avdg - 05/09/2008 19:17
Avatar van avdg PHP gevorderde als ze dat formulier doorzenden, bekijk je of de key niet voorkomt, indien wel, meld dan de gebruiker dat het een dubbelpost is  
Offline Simax - 05/09/2008 19:17
Avatar van Simax Onbekend Heb je misschien een simpel voorbeeldje?
Offline avdg - 05/09/2008 19:23 (laatste wijziging 05/09/2008 19:41)
Avatar van avdg PHP gevorderde aanvraag nieuw formulier:
- maak key aan
- sla key op in db
- geef key een houdbaarheidsdatum (1 uur?) -> geef tijdstip wanneer key verwijderd moet worden
- voeg bij formulier <input type="hidden" name="randkey" value="xxxx">

verwerken formulier:
- bekijk of de key voorkomt in de database
- indien wel, verwijder de key en voeg de topic toe
- indien niet, meld de gebruiker dat er een fout was opgetreden 

verwijder steeds de keys die niet meer geldig zijn  

duidelijk genoeg?
me -> irc trouwens  
Offline JPW120 - 05/09/2008 20:31
Avatar van JPW120 HTML interesse Als iemand iets verstuuurt kun je lijkt mij een sesie starten van 1 minuut met als naam de titel of id van het bericht. Dan ga je bij het in de datebase kijken over die pc die sesie heeft zo niet sla je hem op. 
Offline Rens - 05/09/2008 23:41
Avatar van Rens Gouden medaille

Crew algemeen
Als het verstuurd word stuur je de gebruiker meteen door d.m.v. PHP.net: header.
Dus het zit zo:
  1. <?PHP
  2. if($_SERVER['REQUEST_METHOD'] == "POST")
  3. {
  4. // afhandelen van alles
  5. header("Location: andere_pagina.php");
  6. } else
  7. {
  8. // je formulier
  9. }

Dan maakt het niks uit als de gebruiker op F5 o.i.d. drukt aangezien hij meteen doorgestuurd gaat worden.
Offline Kr4nKz1n - 05/09/2008 23:48
Avatar van Kr4nKz1n Onbekend Wat ook handig is (en het gebeurd steeds vaker) ook bij het aanmaken van een topic een captcha te gebruiken.

Anders kunnen ze nog een 'botje' aan zetten en is je databeestje flink naar de mallemoere geholpen.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.199s