Hoi allemaal!

Ik ben bezig met een website, en wil een php mail functie erin zetten.
Ik heb een site gemaakt met een form (html), en een php bestand met de codes van php.
Het probleem is: als ik de form invul, word ik op een lege pagina gegooit, en krijg geen mail binnen.

Het zou fijn zijn als iemand een oplossing heeft!

Groetjes, Tom Vos


Ik heb dit:

HTML:

<p><?php echo $feedback ?></p>

<form action="php/order.php" method="post">
	<ul>
		<li>
			<label for="name">Achternaam: </label>
			<input type="text" name="name" id="name" />
		</li>
		<li>
			<label for="email">Email:</label>
			<input
		</li>
		<li>
			<label for="order">Bestelling:</label>
			<textarea id="order" name="order" cols="42" rows="9"></textarea>
		</li>
		<li><input type="submit" name="submit" value="Plaats Uw Bestelling" /></li>
	</ul>
</form>


PHP:

<?php
$to = '[email protected]';
$subject = 'bestelling';

$name = $_POST['name'];
$order = $_POST['order'];

$body = <<<email

Bestelling op naam van: $name

Bestelling:
$order

email;

$header = "From: $name";

if($_POST){
	if($name == '' || $order == ''){
	} else{
	mail($to, $subject, $body, $header);
	$feedback = 'Dank u wel voor uw bestelling. U kunt uw bestelling over +/- 30 min ophalen.';
	}
}
?>

Na lijn 20 volgt er geen echo of functie, en wordt er niks uitgevoerd als die die waardes leeg zijn.

Wel zie ik dit aan errors, hoewel ze het script niet laten stoppen:

Notice: Undefined index: name in /in/vNmGK on line 5
Notice: Undefined index: order in /in/vNmGK on line 6

Dit houdt in dat je niet controleert of iets verstuurd is via POST als formulier. Dit kan eenvouding met deze constructie:

<?php
if($_SERVER['REQUEST_METHOD']=="POST") {
	// het forumlier is via POST verstuurd, en vanaf dit punt kan je de validatie uitvoeren en daarna de nodige acties.
} else {
	// het formulie ris niet verstuurd. Desgewenst kan je in deze stap een formulier tonen, of deze 'else' vergeten.
}

?>


Verder mist er een echo om het bericht te tonen.
Waar zou $feedback vandaan moeten komen in deze regel?
echo $feedback

In jouw html staat:
<label for="email">Email:</label>
<input
En waar is de rest van de input?

Je checked niet of er wel gepost is.
je mail is gevoelig voor hackers/spammers omdat je niks controleert/beveiligt.
Je header van de mail is onjuist.
http://phpwiki.santhe.nl/index.php?title=De_juiste_mailheaders
Als ik jouw was zou ik gebruik maken van PHPmailer.

Hiermee kan je gemakkelijk e-mails versturen zonder over de headers na te denken.
Ook is het niet moeilijk om meer dan één e-mails te versturen in één keer.
Gebruik PHPmailer Tom. Dit maakt alles veel dynamischer en makkelijker.

Reageren