Ik heb een shoutbox die soms 2x 1 bericht post. Weet iemand hoe dit kan stoppen? Dit is het script:

<?php
$datfile = "shout.txt";
$MAX_LENGTH = 51;
$NUM_COMMENTS = 9999999;
if (!$name)
{ $name = "$REMOTE_ADDR:"; }
else $name .= "";

$shout = preg_replace("/</","&lt;",$shout);
$shout = preg_replace("/>/","&gt;",$shout);

$comfile = file($datfile);
if ($shout != "") {
if (strlen($shout) < $MAX_LENGTH) {
$fd = fopen ($datfile, "w");
$shout = stripslashes($shout);

fwrite ($fd, "<div style='overflow:hidden'><b>$name</b><br>$shout</div>\n");
for ($i = 0; $i < $NUM_COMMENTS; $i++) {
fwrite ($fd, $comfile[$i]);
}
}
fclose($fd);
}
Header("Location: $HTTP_REFERER");
?>
Waarom open je een nieuw topic? En waarom ga je niet verder je je oude?

Verder gebruik je php die allang niet meer ondersteund word...

if (!$name)

Moet natuurlijk iets zijn als if(!isset($_POST['naam'])) {

Waarom gebruik je geen htmlspecialchars()? En waar komt die $shout vandaan?

Met andere woorden, dit script is ranzig!

En dat hij er 2x inkomt is omdat je eerst je comment erin schrijft, en vervolgens voor iedere comment het er opnieuw inschrijft ofzo.

if (!isset($_POST['naam'])) {
Mijn fout, te druk bezig met andere dingen.
Toch leer je ervan wanneer je een ander script bekijkt en denkt waarom loopt dit niet.
Ik in iedergeval ;-)
Om je dan toch opweg te helpen hier een voorbeeldje van hoe je het ook zou kunnen doen. Wellicht niet perfect, want eigenlijk ben ik op dit moment niet echt lekker om te phpen, dus wellicht kan iemand nog wat dingen toevoegen. Ikzelf werk eigenlijk nooit met .txt bestandjes, ik pleur alles in een sessie of een database.

Mocht phphulp de code weer lekker in de war gooien, download dan hier de txt...

<?php

if(isset($_POST['verstuurformulier']))
{
if(isset($_POST['naam']) && isset($_POST['bericht']))
{
$naam = htmlspecialchars($_POST['naam']);
$bericht = nl2br(htmlspecialchars($_POST['bericht']));
$content = '<b>'.$naam.'</b><br>'.$bericht.'<br>';
}else{
echo 'Je moet wel alles invullen ey!';
exit;
}
$bestand = 'shout.txt';

if(is_writable($bestand))
{
if(!$handeling = fopen($bestand, 'a'))
{
echo 'Sorry, ik kan '.$bestand.' niet openen';
exit;
}

if(fwrite($handeling, $content) === FALSE)
{
echo 'Sorry, ik kan niet naar het bestand ('.$bestand.') schrijven!';
exit;
}

echo 'Het is gelukt!';

fclose($handeling);

}else{
echo "Het bestand is niet beschrijfbaar!";
}
}else{
?>
<form name="form" method="post" action="">
<table border="0" cellspacing="0" cellpadding="5">
<tr>
<td scope="row">Naam</td>
<td><input size="25" name="naam" type="textfield"></td>
</tr>
<tr>
<td scope="row">Bericht</td>
<td><textarea name="bericht" rows="4" cols="26"></textarea></td>
</tr>
<tr>
<td scope="row">&nbsp;</td>
<td><input type="submit" name="verstuurformulier" value="Verstuur"> <input type="reset" value="Wissen"></td>
</tr>
</table>
</form>

<?php
}
?>
Kijk, daar heb ik wat aan;) Bedankt!
Richard schreef op 07.01.2006 17:07
Kijk, daar heb ik wat aan;) Bedankt!


Ja, die zal wel werken.
Maar wat heb jij er nou van geleerd?
SanThe schreef op 07.01.2006 17:59
[quote=Richard schreef op 07.01.2006 17:07]Kijk, daar heb ik wat aan;) Bedankt!


Ja, die zal wel werken.
Maar wat heb jij er nou van geleerd?[/quote]

Niet veel, beetje meer hoe php in elkaar zit,
Maar moest dat dan?
Ja wat denk jij dan? We maken scripts om het jullie te leren, niet dat jullie het achterloos overnemen en niets ervan leren :-)
Klopt, eigenlijk is het de bedoeling dat je het zelf doet, en dat we helpen bij dingen waar je bij vastloopt.

Ik maak scripts altijd stukje bij beetje, bijvoorbeeld eerst een formulier, dan daarna de controle, dan daarna het wegschrijven, enzovoort. Dan weet je precies wat je doet, en je hebt maar een klein deel code waar je fouten in tegenkomt.

Reageren