Hallo allemaal,

Ik heb een gastenboek in elkaar geprobeerd te zetten.
Nu geeft hij echter geen foutmeldingen meer, maar hij slaat de berichten die worden geplaatst niet op. Het lijkt alsof hij deze niet wegschrijfd. Ik zat te denken dat ik misschien de functie fwrite mis. Maar weet ook niet goed waar of dat ik deze zou moeten plaatsen.
Ook zou ik graag captcha erin willen hebben. Ook hierbij heb ik eigenlijk geen idee hoe ik deze in zou moeten bouwen.
Kan iemand mij helpen????

hier is de php code
<?php
$commentaar=$_POST["commentaar"];
$naam=$_POST["naam"];
$email=$_POST["email"];
echo "<h2>Gastenboek van De Mikkies</h2>\n";
echo "<form action=\"$_SERVER[PHP_SELF]\" method=\"post\">\n";
echo "<p>Uw naam: <input type=\"text\" name=\"naam\"></p>\n";
echo "<p>Uw emailadres: <input type=\"text\" name=\"email\"></p>\n";
echo "<p>Uw bericht:</p>\n";
echo "<textarea cols=\"55\" rows=\"5\" wrap=\"soft\" name=\"bericht\"></textarea><br>\n";
echo "<p><input type=\"submit\" value=\"Verzenden\"></p>\n";
echo "<hr>\n";
echo "<p><h2>Berichten die zijn geschreven in het gastenboek van De Mikkies:</h2></p>\n";

$tekstbestand="berichten.txt";
if (isset($commentaar) && naam !="" && email !="") {
$pointer=fopen($tekstbestand,"r+");
$oudcommentaar=fread($pointer,filesize($tekstbestand));
$email="<a href=\"mailto:$email\">#email</a>";
$date=dat("j.n.Y");
$commentaar=htmlspecialchars($commentaar);
$commentaar=stripslashes(nl2br($commentaar));
$geschreven="<p><strong>$naam</strong> ($email) heeft geschreven op <i>$date</i>:
<br><br>$commentaar</p><hr>\n";
rewind($pointer);
fputs($pointer,"$geschreven\n$oudcommentaar\n");
}
readfile($tekstbestand)
?>


Alvast bedankt voor jullie hulp!
Mvg,
Jeffrey
Hij zal niks doen aangezien je <form> nergens afsluit met </form>.

[size=xsmall]Toevoeging op 10/03/2013 19:51:16:[/size]

Zet dit bovenin je script:
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

// rest van je script
?>
- SanThe - op 10/03/2013 19:49:52

Hij zal niks doen aangezien je <form> nergens afsluit met </form>.


Als ik hem zo neerzet klopt het dan wel??
echo "<form action=\"$_SERVER[PHP_SELF]\" method=\"post\">\n";
echo "<p>Uw naam: <input type=\"text\" name=\"naam\"></p>\n";
echo "<p>Uw emailadres: <input type=\"text\" name=\"email\"></p>\n";
echo "<p>Uw bericht:</p>\n";
echo "<textarea cols=\"55\" rows=\"5\" wrap=\"soft\" name=\"bericht\"></textarea><br>\n";
echo "<p><input type=\"submit\" value=\"Verzenden\"></p>\n";
echo "</form>\n";



[size=xsmall]Toevoeging op 10/03/2013 19:59:03:[/size]

Wanneer ik dit in mijn script zet krijg ik gelijk foutmeldingen

<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

// rest van je script
?>


Ik krijg dan de volgende foutmeldingen

Notice: Undefined index: commentaar in /public/sites/www.demikkies.nl/gasten.php on line 12

Notice: Undefined index: naam in /public/sites/www.demikkies.nl/gasten.php on line 13

Notice: Undefined index: email in /public/sites/www.demikkies.nl/gasten.php on line 14

Mijn huidige script is nu:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">;
<html xmlns="http://www.w3.org/1999/xhtml">;
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>De Mikkies - Al 20 jaar DE leukste clowns van Nederland!</title>
</head>
<body>
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

$commentaar=$_POST["commentaar"];
$naam=$_POST["naam"];
$email=$_POST["email"];
echo "<h2>Gastenboek van De Mikkies</h2>\n";
echo "<form action=\"$_SERVER[PHP_SELF]\" method=\"post\">\n";
echo "<p>Uw naam: <input type=\"text\" name=\"naam\"></p>\n";
echo "<p>Uw emailadres: <input type=\"text\" name=\"email\"></p>\n";
echo "<p>Uw bericht:</p>\n";
echo "<textarea cols=\"55\" rows=\"5\" wrap=\"soft\" name=\"bericht\"></textarea><br>\n";
echo "<p><input type=\"submit\" value=\"Verzenden\"></p>\n";
echo "</form>\n";
echo "<hr>\n";
echo "<p><h2>Berichten die zijn geschreven in het gastenboek van De Mikkies:</h2></p>\n";

$tekstbestand="berichten.txt";
if (isset($commentaar) && naam !="" && email !="") {
$pointer=fopen($tekstbestand,"r+");
$oudcommentaar=fread($pointer,filesize($tekstbestand));
$email="<a href=\"mailto:$email\">#email</a>";
$date=dat("j.n.Y");
$commentaar=htmlspecialchars($commentaar);
$commentaar=stripslashes(nl2br($commentaar));
$geschreven="<p><strong>$naam</strong> ($email) heeft geschreven op <i>$date</i>:
<br><br>$commentaar</p><hr>\n";
rewind($pointer);
fputs($pointer,"$geschreven\n$oudcommentaar\n");
}
readfile($tekstbestand)
?>
</body>
</html>

Wat doe ik fout?
$naam=$_POST["naam"];

In dit deel bestaat de $_POSt variabele nog niet eens, en daarbij is het ook zinloos om deze in een losse variabele op te slaan, zonder er een enige bewerking over uit te voeren.


$_POST variabelen zijn pas bekend als je iets hebt verstuurd, dus gebruik
if($_SERVER['REQUEST_METHOD']=="POST"), waarmee je dan pas controleert of het formulier verstuurd is.
- Aar - op 10/03/2013 20:15:44

$naam=$_POST["naam"];

In dit deel bestaat de $_POSt variabele nog niet eens, en daarbij is het ook zinloos om deze in een losse variabele op te slaan, zonder er een enige bewerking over uit te voeren.


$_POST variabelen zijn pas bekend als je iets hebt verstuurd, dus gebruik
if($_SERVER['REQUEST_METHOD']=="POST"), waarna je dan pas controleert of het formulier verstuurd is.


Dus ik moet dit helemaal vervangen door dit?
$commentaar=$_POST["commentaar"];
$naam=$_POST["naam"];
$email=$_POST["email"];

if($_SERVER['REQUEST_METHOD']=="POST")
die $_POST zijn pas na die if-statement te gebruiken, maar het kopieeren is gewoon alsnog onzinnig.

Reageren