Hallo

Ik ben nieuw in PHP en heb een code geschreven om de gegevens die in een html form worden ingegeven te controleren en te versturen per mail. De mail met de gegevens komt toe, maar de controle wordt echter niet uitgevoerd. Kan iemand zeggen wat er verkeerd is aan mijn code?

<?php

$naam = $_POST["naam"];
$email = $_POST["email"];
$tel = $_POST["telefoon"];
$adres = $_POST["adres"];
$naamProduct = $_POST["naamProduct"];
$soortProduct = $_POST["soortProduct"];
$aantal = $_POST["aantal"];
$formaat = $_POST["formaat"];
$papier = $_POST["papier"];
$bedrukking = $_POST["bedrukking"];
$afwerking = $_POST["afwerking"];
copy ($_FILES["file"]["tmp_name"], "upload/".$_FILES["file"]["name"]) or die ("Could not upload");

if(isset($_POST["submit"])){
$naam=strip_tags($_POST["naam"]);
$email=strip_tags($_POST["email"]);
$tel=strip_tags($_POST["telefoon"]);
$adres=strip_tags($_POST["adres"]);
$naamProduct=strip_tags($_POST["naamProduct"]);
$soortProduct=strip_tags($_POST["soortProduct"]);
$aantal=strip_tags($_POST["aantal"]);
$formaat=strip_tags($_POST["formaat"]);
$papier=strip_tags($_POST["papier"]);
$bedrukking=strip_tags($_POST["bedrukking"]);
$afwerking=strip_tags($_POST["afwerking"]);

$error_msg="";
if(strlen($naam)<3){
$error_msg="Vul uw naam in.<br>";
}
if(!ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$",$email)){
$error_msg.="Geef een geldig e-mailadres op.<br>";
}
if(!ereg("^[0-9]+$",$tel)){
$error_msg.="Geef een geldig telefoonnummer op.<br>";
}
if(strlen($tel)<8){
$error_msg.="Geef een geldig telefoonnummer op.<br>";
}
if(strlen($adres)<0){
$error_msg.="Geef uw adres op.<br>";
}
if(strlen($naamProduct)<0){
$error_msg.="Geef de naam voor het opgeladen bestand op.<br>";
}
if(strlen($soortProduct)<0){
$error_msg.="Geef het gekozen product op.<br>";
}
if(strlen($aantal)<0){
$error_msg.="Geef het aantal op.<br>";
}
if(!ereg("^[0-9]+$",$aantal)){
$error_msg.="Geef een geldig aantal op.<br>";
}
if(strlen($formaat)<0){
$error_msg.="Geef het formaat op.<br>";
}
if(strlen($papier)<0){
$error_msg.="Geef het gekozen papier op.<br>";
}
if(strlen($bedrukking)<0){
$error_msg.="Geef de juiste bedrukking op.<br>";
}
if(strlen($afwerking)<0){
$error_msg.="Geef de nodige afweringk op.<br>";
}
if(!isset($_POST["algemenevoorwaarden"])){
$error_msg.="U moet akkoord gaan met de algemene voorwaarden.<br>";
}
if(strlen($error_msg)>0){
//Een van de velden is niet juist ingevuld
echo "Om de volgende reden kan uw vraag helaas niet worden verwerkt:<br><br>";
echo $error_msg;
echo "<br>Klik op <a href=javascript:history.back(1)>terug</a> en vul alle velden in.";
}

}else{

$to = "[email protected]";
$subject = "Bestelling van drukwerk via de site";

$from_header = "From: $email";
$contents = "het aanvraagformulier is op " .date("d-m-Y") . " om" . date("H:i"). "uur verzonden.\n";
$contents .= "Dit bericht is afkomstig van: \r\n";
$contents .= "Naam: " . $naam ."\r\n";
$contents .= "Email: " .$email. "\r\n";
$contents .= "Telefoon: " .$tel."\r\n";
$contents .= "Adres: " . $adres . "\r\n";
$contents .= "\r\nDe bestelling houdt het volgende in: \r\n";
$contents .= "Soort product: ".$soortProduct."\r\n";
$contents .= "Naam product: ".$naamProduct."\r\n";
$contents .= "Aantal: ".$aantal."\r\n";
$contents .= "Formaat: " .$formaat."\r\n";
$contents .= "Papier: " .$papier."\r\n";
$contents .= "Bedrukking: " .$bedrukking."\r\n";
$contents .= "Afwerking: ".$afwerking."\r\n";


//send mail - $subject & $contents come from surfer input
mail($to, $subject, $contents, $from_header);
// redirect back to url visitor came from
echo "Het formulier werd goed verzonden.";
}
?>

Bedankt!
Annelies
Je logica klopt niet.

Heel je mail blok zou niet bij else {} moeten staan van if(isset($_POST["submit"])), maar als else van if(strlen($error_msg)>0)

Controleren op een submit knop, is trouwens geen goed idee.

Kijk, ik heb je code wat herschreven.

<?php
if( $_SERVER["REQUEST_METHOD"] == 'POST' )
{
$error_msg="";
if (!empty($_FILES["file"]["name"]))
copy ($_FILES["file"]["tmp_name"], "upload/".$_FILES["file"]["name"]) or die ("Could not upload");
else
{
// eventueel een message meegeven
}
$naam = strip_tags($_POST["naam"]);
$email = strip_tags($_POST["email"]);
$tel = strip_tags($_POST["telefoon"]);
$adres = strip_tags($_POST["adres"]);
$naamProduct = strip_tags($_POST["naamProduct"]);
$soortProduct = strip_tags($_POST["soortProduct"]);
$aantal = strip_tags($_POST["aantal"]);
$formaat = strip_tags($_POST["formaat"]);
$papier = strip_tags($_POST["papier"]);
$bedrukking = strip_tags($_POST["bedrukking"]);
$afwerking = strip_tags($_POST["afwerking"]);

if(strlen($naam) < 3)
{
$error_msg="Vul uw naam in.<br/>";
}
if(!ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$",$email))
{
$error_msg.="Geef een geldig e-mailadres op.<br/>";
}
if(!ereg("^[0-9]+$",$tel))
{
$error_msg.="Geef een geldig telefoonnummer op.<br/>";
}
if(strlen($tel) < 8)
{
$error_msg.="Geef een geldig telefoonnummer op.<br/>";
}
if(strlen($adres) < 0)
{
$error_msg.="Geef uw adres op.<br/>";
}
if(strlen($naamProduct) < 0)
{
$error_msg.="Geef de naam voor het opgeladen bestand op.<br/>";
}
if(strlen($soortProduct) < 0)
{
$error_msg.="Geef het gekozen product op.<br/>";
}
if(strlen($aantal) < 0)
{
$error_msg.="Geef het aantal op.<br/>";
}
if(!ereg("^[0-9]+$",$aantal))
{
$error_msg.="Geef een geldig aantal op.<br/>";
}
if(strlen($formaat) < 0)
{
$error_msg.="Geef het formaat op.<br/>";
}
if(strlen($papier) < 0)
{
$error_msg.="Geef het gekozen papier op.<br/>";
}
if(strlen($bedrukking) < 0)
{
$error_msg.="Geef de juiste bedrukking op.<br/>";
}
if(strlen($afwerking) < 0)
{
$error_msg.="Geef de nodige afweringk op.<br/>";
}
if(!isset($_POST["algemenevoorwaarden"]))
{
$error_msg.="U moet akkoord gaan met de algemene voorwaarden.<br/>";
}
if(strlen($error_msg)>0)
{
//Een van de velden is niet juist ingevuld
echo "Om de volgende reden kan uw vraag helaas niet worden verwerkt:<br/><br/>";
echo $error_msg;
echo "<br/>Klik op <a href=javascript:history.back(1)>terug</a> en vul alle velden in.";
}
$to = "[email protected]";
$subject = "Bestelling van drukwerk via de site";
$from_header = "From: $email";
$contents = "het aanvraagformulier is op " .date("d-m-Y") . " om" . date("H:i"). "uur verzonden.\n";
$contents .= "Dit bericht is afkomstig van: \r\n";
$contents .= "Naam: " . $naam ."\r\n";
$contents .= "Email: " .$email. "\r\n";
$contents .= "Telefoon: " .$tel."\r\n";
$contents .= "Adres: " . $adres . "\r\n";
$contents .= "\r\nDe bestelling houdt het volgende in: \r\n";
$contents .= "Soort product: ".$soortProduct."\r\n";
$contents .= "Naam product: ".$naamProduct."\r\n";
$contents .= "Aantal: ".$aantal."\r\n";
$contents .= "Formaat: " .$formaat."\r\n";
$contents .= "Papier: " .$papier."\r\n";
$contents .= "Bedrukking: " .$bedrukking."\r\n";
$contents .= "Afwerking: ".$afwerking."\r\n";
//send mail - $subject & $contents come from surfer input

// echo '<pre>'. print_r( array($to, $subject, $contents, $from_header), 1 ) .'</pre>';
mail($to, $subject, $contents, $from_header);

// redirect back to url visitor came from
echo "Het formulier werd goed verzonden.";
}
else
{
// zet hier zelf je formulier zoals je het zelf hebt.
echo '
<form method="post" enctype="multipart/form-data">
<div><label><input name="naam"/> naam </label></div>
<div><label><input name="email"/> email </label></div>
<div><label><input name="telefoon"/> telefoon </label></div>
<div><label><input name="adres"/> adres </label></div>
<div><label><input name="naamProduct"/> naamProduct </label></div>
<div><label><input name="soortProduct"/> soortProduct </label></div>
<div><label><input name="aantal"/> aantal </label></div>
<div><label><input name="formaat"/> formaat </label></div>
<div><label><input name="papier"/> papier </label></div>
<div><label><input name="bedrukking"/> bedrukking </label></div>
<div><label><input name="afwerking"/> afwerking </label></div>
<div><label><input name="algemenevoorwaarden" type="checkbox"/> Ik aanvaard ... </label></div>
<div><label><input name="file" type="file"/></label></div>
<div><label><input value="OK" type="submit"/></label></div>
</form>
';
}
?>

Je zou trouwens ook wat aan de veiligheid moeten doen, maar dat is weer een ander verhaal.
Alleen de mail()-functie uitvoeren geeft niet de garantie dat ie ook echt gelukt is, zoals met zoveel. Zet er dus een if() omheen.

Reageren