Hej,

Ik ben hier met php een shoutbox aan het maken. Nu zit het formuliertje waar je de tekst moet typen dat je verstuurd in hetzelfde bestand als het scriptje dat de berichtjes toont maar...

Als ik de pagina's ververs (als ik al een keer een bericht heb toegevoegd) vraagt IE telkens of ik zeker ben dat ik de pagina wil vernieuwen (omdat er dus een formulier in zit) en hij voegt het bericht dat ik de eerste keer heb ingevuld telkens opnieuw toe. Hoe kan ik er nu voor zorgen dat de pagina automatisch herlaad zonder dat ie dit irritante berichtje geeft en zonder dat ie telkens als ie herlaad automatisch het berichtje toevoegt dat ik de eerste keer heb ingevuld.

Alvast bedankt!
Na het invullen van het formuliertje wordt er toch al ververst.
hier op phphulp hebben ze dat ook, wanneer je een forum bericht toevoegt word je eerst naar een pagina gestuurd waar die de waardes in de database zet. Alleen vind ik het dom gemaakt, als je daar refresht dat de waardes ook meerdere keren erin gaan (dus er word niet naar de waardes gekeken oid). Nja zonder moderators zou het een choas zijn LOL.
maar nadat ie het toegevoegd heeft gaat ie weer terug naar de forum. misschien is het handig?
SanThe schreef op 24.12.2008 15:04
Na het invullen van het formuliertje wordt er toch al ververst.


Ja maar vreemd genoeg voegt ie het bericht als je de pagina nog een keer ververst opnieuw toe
Dat is niet vreemd. Je browser stuurt het formulier na een refresh gewoon opnieuw. Als er dan nogmaals iets mee wordt gedaan zit dat in het script.
Om waardes dubbel keer toegevoegd krijgen na te gaan zou je met sessie's kunnen werken.

<?php
session_start();

//controle of bericht word verzonden, zo ja ->
$zoumetmd5 = salt(md5($naam_toevoeger,$bericht_toevoeger,$ip_$toevoeger,$id_toevoeger);
if(isset($_SESSION['spam']) == $zoutmetmd5) {
//spam;
} else {
$_SESSION['spam'] = salt(md5($naam_toevoeger,$bericht_toevoeger,$ip_$toevoeger,$id_toevoeger);
}

?>
Hej,

Bedankt voor de reacties allemaal.

Bestaat er ook niet gewoon een manier om die waardes als het waren te verwijderen uit het script?
-
Verreweg het makkelijkst om dit te voorkomen is door de pagina met een header() te herladen nadat de gegevens succesvol aan de database toegevoegd wordt.

@Peter: salt() is geen PHP functie, dus ik weet niet waar je die vandaan haalt?
Hej,

als ik dit script gebruik zegt ie dat de headers al verstuurd zijn.... maar dat klopt niet want nergens in mijn script heb ik de headers verstuurd....



<body>
<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
<table>
<tr>
<td><input type="text" name="msg" size="60" /> <input type="submit" value="Shout!" /><input type="reset" ID="reset"></td>
</tr>
</table>
</form>

<?php

include("connect.php");

if($_POST && !empty($_POST['msg']))
{
	$sql = "INSERT INTO `shoutbox`.`msg` (
			`ID` ,
			`naam` ,
			`bericht` ,
			`time` 
			)
			VALUES (
			NULL , 'Aaron', '$_POST[msg]', NOW( ) 
			);
			";
			
	mysql_query($sql);
	unset($_POST);
	header("refresh");
}


$sql_fetch = "SELECT * 
		FROM `msg` 
		ORDER BY `msg`.`time` DESC 
		LIMIT 0 , 30
		";
$query_fetch = mysql_query($sql_fetch);

echo "<table>";
while($shouts = mysql_fetch_assoc($query_fetch))
{
	echo "	
	<tr><td>[ $shouts[time] ] <strong>< $shouts[naam] >:</strong>  $shouts[bericht]</td></tr>
	";
	
}
echo "</table>";



Dan krijg ik deze melding:


Warning: Cannot modify header information - headers already sent by (output started at E:\server\xampp\htdocs\shoutbox\shout.php:2) in E:\server\xampp\htdocs\shoutbox\shout.php on line 29
Zodra je output naar de browser verstuurt, worden de html headers verzonden. En aangezien jij aan het begin van je script al html output, zit daar dus het probleem...

Reageren