Archief - PHP: invoer van gegevens.

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Deefees

Legacy Member
Hallo, ik heb dus een kleine database gemaakt met een 'forumpje'. Nu als er gegevens ingevoerd worden in de database of op het forum en er op f5 geduwt word, of als er in firefox terug word gegaan naar de vorige pagina ofzo. Dan worden die gevens nogmaals ingevoerd, of dan is er in firefox een popup-'error'.

Wat moet ik doen zodat die gegevens niet opnieuw worden verzonden?
Ik heb iets opgevangen van header ("Location: "$path); maar ik snap het niet goed, ook omdat dit enkel helemaal bovenaan mag worden geplaatst?

Ps: heeft iemand toevallig een script om op te slaan in welke topics nieuwe posts staan sinds vorig bezoek (cookies dus, ben het aan het leren, maar is nogal ingewikkeld :p ). Thx

killgore

Legacy Member
Echt vermijden kan je dit niet. Met die location-header zorg je gewoon dat je browser redirect :). Dit moet niet vanboven staan maar voor elke output, omdat headers moeten worden verstuurd voor alle andere output (heeft met het http-protocol te maken, je kan dit dus niet gaan wijzigen).

je kan ook meta-tags gebruiken voor refresh:
<meta http-equiv="refresh" content="5;url" />

dan zal na 5 seconden geredirect worden naar de specifieke url. Dit moet wel in je html-headers (tussen <head>) staan, niet verwarren met die http-headers :p!

Deefees

Legacy Member
ja die meta kende ik al, maar das niet zo "strict" dacht ik. Bij het 'forum' gebruikte ik
Code:
echo "<meta http-equiv=\"Refresh\" content=\"0;url=\"$path?menu=gastenboek&cat=algemeen\" />";
hier word dan de topic-lijst ververst met de nieuwe topic erbij dus. Maar als je dan nog eens refresht post je bijgevolg nog eens? Dit is dus niet op te lossen.?

Da_Luke

Legacy Member
Waarom stuur je de gegevens die moeten ingevoegd worden in de database niet naar een php file die de gegevens verwerkt in de database steekt en dan je onmiddellijk forward naar de forum pagina waar je zit?

Deefees

Legacy Member
Ah, dat had ik ook al gehoord. Vraagt natuurlijk wel wat werk maar ja, dat neem ik erbij :)

Is het dan zeker dat bij een refresh niet nog eens de gegevens verzonden worden?

groeten

killgore

Legacy Member
die refresh is eigenlijk geen refresh als je de url parameter meegeeft, dan is het een forward.

En html-statements echo je niet, je stopt je php met ?>, schrijft je html en gaat dan weer verder met <?php.

Deefees

Legacy Member
Nog een vraag:
Als ik meerdere mysql_query's na elkaar zet werkt dit niet.

Er is dus een delete voor de posts op een forum, en ik wil eerst een backup van de post in een andere tabel in men database, waarna de originele post gedelete word. Nu heb ik dus een Insert vr de ene tabel waarbij ik
return mysql_query($r, $db); heb
als ik dan de delete doe, dan werkt het niet meer. Kun je geen twee 'returns' na elkaar doen? ik heb de backup en delete in aparte functies gegoten, maar dit help dus ook niet. Na de eerste return doet hij niets meer.

RedCrew

Legacy Member
sudden_striker zei:
Ps: heeft iemand toevallig een script om op te slaan in welke topics nieuwe posts staan sinds vorig bezoek (cookies dus, ben het aan het leren, maar is nogal ingewikkeld :p ). Thx
Waarom dat in cookies opslaan ?
zet in uw tabel user een kolom lastlogin oid bij en bij het inloggen zet je de laatste login (datetime) in een sessie en overschrijf je met NOW() de waarde in uw mysql tabel. En dan reken je het verschil uit tussen de twee logins.

Het probleem van f5 kan je ook opvangen door bij het inzetten te controleren of de topic titel al bestaat && of het langer dan bijv 1 minuut geleden al gepost is door hem op deze topic titel. dat is altijd veilig ook al doe je met header een reload zodat uw POST waarden leeg zijn
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan