Invul formulier hulp nodig!

Status
Niet open voor verdere reacties.

JeroenHulshof

Gebruiker
Lid geworden
13 dec 2012
Berichten
43
Beste mensen van Helpmij.nl,

Ik zit met een probleem. Ik ben php aan het leren, maar het wil niet lukken.
Mijn probleem is:

Als ik niks invul, behalve bij naam: f (of iets anders randoms), dan verstuurt hij de email wel. Terwijl hij eigenlijk moet zeggen: "Verplichte velden invullen etc".

Dit is mijn code:

PHP:
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Untitled Document</title>
</head>
<body>
	<?php  
if (!isset($_POST['naam']) || !isset($_POST['email']) || !isset($_POST['bericht'])) {  
    echo 'U heeft niet alle velden ingevuld!';  
    exit;  
}  
  
$naam = htmlspecialchars($_POST['naam']);  
$email = htmlspecialchars($_POST['email']);  
$bericht = htmlspecialchars($_POST['bericht']);  
  
$tijd = time();  
$datum = strftime('%d/%m/%y %H:%M', $tijd);  
$ip = getenv('REMOTE_ADDR');  
$message = $naam.' met het e-mailadres '.$email.' en het IP '.$ip.' stuurde op '.$datum.' het volgende bericht:  
____________________________________  
'.$bericht.'  
------------------------------------';  
  
mail('support@endercraft.nl', 'Bericht van Endercraft', $message, 'From: '.$email);  
  
echo 'Uw bericht is verzonden. U krijgt zo snel mogelijk antwoord.';  
?>  
</body>
</html>

en dit is mijn html pagina:

Code:
<div id="info">
			<center><form name="form1" method="post" action="post.php">  
      Naam: <br><input name="naam" type="text" value""><br>  
      E-mail: <br><input name="email" type="text" value=""><br><br>  
      <textarea name="bericht" rows="7" cols="45"></textarea><br>  
      <input type="submit" name="Submit" value="Verzenden"></form>
</form>  
	 </div>

Hopen dat jullie mij kunnen helpen!

Mvg,
 
Vervang
Code:
if (!isset($_POST['naam']) || !isset($_POST['email']) || !isset($_POST['bericht'])) {  
    echo 'U heeft niet alle velden ingevuld!';  
    exit;  
}
Met
Code:
$verplicht = array('naam', 'email', 'bericht');
foreach($verplicht as $i)
{
    if ($_POST[$i]=="")
    {
        echo "U heeft niet alle velden ingevuld!";
        exit;
    }
}

Net als in het andere topic, waarin precies hetzelfde staat toevallig (:P) Het probleem is dat de variabelen wel bestaan, maar leeg zijn. Je checkt nu of ze bestaan, niet of ze leeg zijn.
 
Hey hardstikke bedankt,
het werkt!

Ik heb alleen nog 1 vraagje,
is het mogelijk dat ik de foutmeldingen op de zelfde pagina krijg als het formulier?

Dat zou uber zijn! (:

Mvg.
 
geef je html formulier een .php extensie
verander de verwijzing (nu post.php) naar de naam van het bestand waar het formulier in staat
kopieer het php script in hetzelfde bestand waar het html script in staat.
 
hallo,

Waar moet ik dat dan in plaatsen? Ik heb de action veranderd van post.php naar invul.php (Dat is de invul pagina).
Helaas geeft hij nogsteeds geen foutmeldingen aan.

Ik heb mijn php nu in de body staan, ik heb geen idee of dit goed is:

PHP:
<body>
	<div id="container">
		<header>
		<img src="./assets/images/banner.png" alt="Banner" width="950" height="150">	
	</header>
	<nav id="top-menu">
			<ul>
			    <li><a href="../Lars Website/index.html" title="Menu Item #1">Home</a></li>
			    <li><a href="../Lars Website/contact.html" title="Menu Item #2">Contact</a></li>
			    <li><a href="../Lars Website/prijslijst.html" title="Menu Item #3">Prijslijst</a></li>
			</ul>
		</nav>
		<div id="info">
		<div id="info">
			<center><form name="form1" method="post" action="invul.php">  
      Naam: <input name="naam" type="text" value""> 
      <p>E-mail: <input name="email" type="text" value="">  
      <p>Ingame naam: <input name="ign" type="text" value="">  
      <p><textarea name="bericht" rows="7" cols="45"></textarea><br>  
      <input type="submit" name="Submit" value="Verzenden"></form>
</form>  
	 </div>
	 </div>
	 <div id="copyright">
	 	<center><p>&copy Deep Sea Diving 2013. All rights reserved.</p></center>
	 </div>
	</div>
	<?php  
$verplicht = array('naam', 'email', 'bericht');
foreach($verplicht as $i)
{
    if ($_POST[$i]=="")
    {
        echo "U heeft niet alle velden ingevuld!";
        exit;
    }
}
  
$naam = htmlspecialchars($_POST['naam']);  
$email = htmlspecialchars($_POST['email']);  
$bericht = htmlspecialchars($_POST['bericht']);  
  
$tijd = time();  
$datum = strftime('%d/%m/%y %H:%M', $tijd);  
$ip = getenv('REMOTE_ADDR');  
$message = $naam.' met het e-mailadres '.$email.' en het IP '.$ip.' stuurde op '.$datum.' het volgende bericht:  
____________________________________  
'.$bericht.'  
------------------------------------';  
  
mail('support@endercraft.nl', 'Bericht van Endercraft', $message, 'From: '.$email);  
  
echo 'Uw bericht is verzonden. U krijgt zo snel mogelijk antwoord.';  
?> 
</body>

Hartelijk dank voor jullie snelle reactie's!
En hopelijk fixen we dit ook!

Mvg,
 
Dat is goed. Als je een error krijgt is het handig deze ook te vermelden maar ik neem aan dat je een error krijgt dat de postvariabelen niet bestaan. Je zal geen error krijgen wanneer je het formulier invult en verstuurd. Dit lossen we op door te checken of we postdata ontvangen hebben:
Code:
<body>
    <div id="container">
        <header>
        <img src="./assets/images/banner.png" alt="Banner" width="950" height="150">    
    </header>
    <nav id="top-menu">
            <ul>
                <li><a href="../Lars Website/index.html" title="Menu Item #1">Home</a></li>
                <li><a href="../Lars Website/contact.html" title="Menu Item #2">Contact</a></li>
                <li><a href="../Lars Website/prijslijst.html" title="Menu Item #3">Prijslijst</a></li>
            </ul>
        </nav>
        <div id="info">
        <div id="info">
            <center><form name="form1" method="post" action="invul.php">  
      Naam: <input name="naam" type="text" value""> 
      <p>E-mail: <input name="email" type="text" value="">  
      <p>Ingame naam: <input name="ign" type="text" value="">  
      <p><textarea name="bericht" rows="7" cols="45"></textarea><br>  
      <input type="submit" name="Submit" value="Verzenden"></form>
</form>  
     </div>
     </div>
     <div id="copyright">
        <center><p>&copy Deep Sea Diving 2013. All rights reserved.</p></center>
     </div>
    </div>
    <?php
	
if ($_SERVER['REQUEST_METHOD']=="POST")
{
	$verplicht = array('naam', 'email', 'bericht');
	foreach($verplicht as $i)
	{
		if ($_POST[$i]=="")
		{
			echo "U heeft niet alle velden ingevuld!";
			exit;
		}
	}

	$naam = htmlspecialchars($_POST['naam']);  
	$email = htmlspecialchars($_POST['email']);  
	$bericht = htmlspecialchars($_POST['bericht']);  
	  
	$tijd = time();  
	$datum = strftime('%d/%m/%y %H:%M', $tijd);  
	$ip = getenv('REMOTE_ADDR');  
	$message = $naam.' met het e-mailadres '.$email.' en het IP '.$ip.' stuurde op '.$datum.' het volgende bericht:  
	____________________________________  
	'.$bericht.'  
	------------------------------------';  
	  
	mail('support@endercraft.nl', 'Bericht van Endercraft', $message, 'From: '.$email);  
	  
	echo 'Uw bericht is verzonden. U krijgt zo snel mogelijk antwoord.';
}
?> 
</body>
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan