uitleg gevraagd over email beveiliging

Status
Niet open voor verdere reacties.
Volgens mij moet die ook wel goed gaan hoor :)
 
Helaas geeft het onderstaande hetzelfde resultaat. Er wordt dus wel gecontroleerd of het getallen zijn maar hij onderbreekt het script niet. De mailtje komen ook gewoon aan in m'n mailbox.

Probeer dit eens:
PHP:
<?php  
$to = "mail@lusinkwebdesign.nl";  
$subject = "Mail van CE2008";  

$bedrijfsnaam = $_POST['bedrijfsnaam'];  
$contactpersoon = $_POST['contactpersoon']; 
$telefoon = $_POST['telefoon']; 
$email = $_POST['email'];  
$bericht = $_POST['bericht']; 

$message = "  
Bedrijfsnaam: $bedrijfsnaam  
Contactpersoon:  $contactpersoon 
Telefoon: $telefoon 
Email: $email 
Bericht: $bericht 
";  

//zorgt ervoor dat als bedrijfsnaam leeg is echo uitgevoerd wordt 
if (empty($_POST['bedrijfsnaam'])) { 
    echo "U bent vergeten een bedrijfsnaam in te vullen"; 
//else zorgt ervoor dat als er iets is ingevuld, dat het script het volgende invoerveld gaat controleren     
} elseif (empty($_POST['contactpersoon'])) { 
    echo "U bent vergeten een contactpersoon op te geven"; 
     
} elseif (empty($_POST['telefoon'])) { 
    echo "U bent vergeten een telefoonnummer op te geven"; 
} elseif(!is_int($_POST['telefoon'])) {
    echo 'Het ingevoerde telefoonnummer is niet geldig';
} elseif (empty($_POST['email'])) { 
    echo "U bent vergeten een email adres op te geven"; 
} 

$email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL); 
if(filter_var($email, FILTER_VALIDATE_EMAIL)) { 
    mail ($to, $subject, $message);   
    echo "Uw bericht is verzonden. Er wordt zo spoedig mogelijk contact met u opgenomen";   
} else {  
  echo ' Het e-mailadres is niet geldig';  
}  
?>
 
Hmmmm er zitten meer fouten in. Als ik het formulier helemaal invul en op versturen druk,
dan gaat het goed, maar vul ik bv. niets in bij "bedrijfsnaam" en de rest wel, dan krijg ik wel de melding dat er een bedrijfsnaam ingevuld moet worden, maar ook dat het bericht verzonden is. :shocked:
 
Wanneer ik thuis ben zal ik even het e.e.a. uitwerken.

Voorzien van voldoende commentaar ;)
 
PHP:
<?php
/* Foutmelding variabele */
$errorMsg = array();
/* Einde foutmelding variabele */

/* Configuratie */
$to = "mail@lusinkwebdesign.nl";   
$subject = "Mail van CE2008";
$message = "   
Bedrijfsnaam: $bedrijfsnaam   
Contactpersoon:  $contactpersoon  
Telefoon: $telefoon  
Email: $email  
Bericht: $bericht  
"; 
/* Einde configuratie */

/* Hernoemen */
$bedrijfsnaam = $_POST['bedrijfsnaam'];   
$contactpersoon = $_POST['contactpersoon'];  
$telefoon = $_POST['telefoon'];  
$email = $_POST['email'];   
$bericht = $_POST['bericht'];  
/*  Einde hernoemen */

/* Controles uitvoeren */
// Door alleen een IF te gebruiken kun je meerdere fouten tegelijk weergeven.

// Controle(s) op bedrijfsnaam
// Omdat je de variabelen hernoemt hebt hoef je geen $_POST te gebruiken
if(empty($bedrijfsnaam)) {
  // We geven een nieuwe element door aan $errorMsg
  $errorMsg[] = 'U bent vergeten een bedrijfsnaam in te vullen.';
}

// Controle(s) op contactpersoon
if(empty($contactpersoon)) { 
  // Melding
  $errorMsg[] = 'U bent vergeten een contactpersoon op te geven.';
}

// Controle(s) op telefoon
if(empty($telefoon)) {
  // Melding
  $errorMsg[] = 'U bent vergeten een telefoonnummer op te geven.';
} elseif(!is_numeric($telefoon)) {
  // Omdat je 2 dingen wilt controleren gebruik je nu een ELSEIF
  // Melding
  $errorMsg[] = 'Het ingevoerde telefoonnummer is niet geldig.';
}

// Controle(s) op e-mail
// Eerst controleren op foute tekens
$email = filter_var($email, FILTER_SANITIZE_EMAIL);
if(empty($email)) {
  // Melding
  $errorMsg[] = 'U bent vergeten een email adres op te geven';
} elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
  // Email validatie uitgevoerd
  // Melding
  $errorMsg[] = 'Het door u ingevulde e-mailadres is ongeldig.';
}

/* Einde controles */

/* Mail versturen */
// Kijken of het aantal array-element hoger dan 0 is
if(count($errorMsg) > 0) {
  // Er zijn fouten gevonden
  // Alle fouten weergeven
  echo 'De volgende fouten zijn gevonden: <br /><br />';
  foreach($errorMsg AS $error) {
    echo $error .'<br />';
  }
} else {
  // Geen fouten gevonden dus mailen
  // Controle of mail is verstuurd
  if(mail($to, $subject, $message)) {
    echo 'Uw bericht is verzonden. Er wordt zo spoedig mogelijk contact met u opgenomen.';
  } else {
    echo 'Er is iets verkeerd gegaan met het mailen, probeert u het later nogmaals.';
  }
}
/* Einde mail versturen */
?>

Volgens mij moet deze aardig werken.
Mocht je naar aanleiding van het commentaar nog vragen hebben, schroom niet ;)
 
Dat heb je duidelijk neergezet. Ik zie dat er wat (voor mij) nieuwe functies bijgekomen zijn.
Vragen zal ik straks ongetwijfeld hebben, maar ik zal eerst eens kijken of ik dit zelf kan "ontleden". Maar ik heb al gezien dat ik hier een stuk wijzer van ga worden!:D

Ik hoop dat ik straks tijd heb om het script uit te proberen. zo niet, dan doe ik dit vanavond en zal ik je laten weten of het werkt.

Groet,
Mark
 
Heb het script even snel getest........werkt perfect:thumb:
Kan vanavond waarschijnlijk pas weer verder (hoop ik), dus ik hou dit topic nog even open voor de vragen die ik straks heb.
 
Waarschijnlijk zul je de delen configuratie en hernoemen even om moeten draaien. Anders krijg je denk ik een leeg mailbericht :)
 
Die moest ik inderdaad omdraaien en nu is het goed. (had iets meer tijd om te testen)
Ik heb je commentaar goed gelezen en moet zeggen dat ik denk dat ik het grootste gedeelte van het script wel snap.

die errorMsg is een lege array die de foutmeldingen verzameld. Dus i.p.v. de foutmeldingen direct op het scherm af te drukken als er niet aan de if-conditie voldaan wordt, "verzamel" je ze in de errorMsg array. Bij het versturen tel je met "count" of er meer als 0 fouten in de array zitten, en als dat zo is dan spreek je met "foreach" de array aan om vervolgens de fouten op het scherm te printen.

IF/ELSE snap ik nu ook beter.:D

Waarom je de variable hernoemd kan ik niet bedenken. Het enige wat er in me opkomt is dat het mischien makkelijker is voor de schrijfwijze van de rest van het script....
(maar dat zal vast niet de reden zijn).
 
Je snapt het inderdaad al aardig :)
Waarom je de variable hernoemd kan ik niet bedenken. Het enige wat er in me opkomt is dat het mischien makkelijker is voor de schrijfwijze van de rest van het script....
(maar dat zal vast niet de reden zijn).

Tja, ik dacht dat jij dat voor jezelf had gedaan aangezien je die hernoeming in je eerste script al had opgenomen. In principe is het onnodig.

In onderstaand script heb ik ze achterwege gelaten. Als het goed is moet dat je uiteindelijke script zijn :) (Zie dat ik nu ook de config heb aangepast)
PHP:
<?php
/* Foutmelding variabele */
$errorMsg = array();
/* Einde foutmelding variabele */

/* Configuratie */
$to = "mail@lusinkwebdesign.nl";   
$subject = "Mail van CE2008";
$message = "   
Bedrijfsnaam: $_POST[bedrijfsnaam]
Contactpersoon:  $_POST[contactpersoon]
Telefoon: $_POST[telefoon]
Email: $_POST[email]
Bericht: $_POST[bericht]
"; 
/* Einde configuratie */

/* Controles uitvoeren */
// Door alleen een IF te gebruiken kun je meerdere fouten tegelijk weergeven.

// Controle(s) op bedrijfsnaam
if(empty($_POST['bedrijfsnaam'])) {
  // We geven een nieuwe element door aan $errorMsg
  $errorMsg[] = 'U bent vergeten een bedrijfsnaam in te vullen.';
}

// Controle(s) op contactpersoon
if(empty($_POST['contactpersoon'])) { 
  // Melding
  $errorMsg[] = 'U bent vergeten een contactpersoon op te geven.';
}

// Controle(s) op telefoon
if(empty($_POST['telefoon'])) {
  // Melding
  $errorMsg[] = 'U bent vergeten een telefoonnummer op te geven.';
} elseif(!is_numeric($_POST['telefoon'])) {
  // Omdat je 2 dingen wilt controleren gebruik je nu een ELSEIF
  // Melding
  $errorMsg[] = 'Het ingevoerde telefoonnummer is niet geldig.';
}

// Controle(s) op e-mail
// Eerst controleren op foute tekens
$email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
if(empty($email)) {
  // Melding
  $errorMsg[] = 'U bent vergeten een email adres op te geven';
} elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
  // Email validatie uitgevoerd
  // Melding
  $errorMsg[] = 'Het door u ingevulde e-mailadres is ongeldig.';
}

/* Einde controles */

/* Mail versturen */
// Kijken of het aantal array-element hoger dan 0 is
if(count($errorMsg) > 0) {
  // Er zijn fouten gevonden
  // Alle fouten weergeven
  echo 'De volgende fouten zijn gevonden: <br /><br />';
  foreach($errorMsg AS $error) {
    echo $error .'<br />';
  }
} else {
  // Geen fouten gevonden dus mailen
  // Controle of mail is verstuurd
  if(mail($to, $subject, $message)) {
    echo 'Uw bericht is verzonden. Er wordt zo spoedig mogelijk contact met u opgenomen.';
  } else {
    echo 'Er is iets verkeerd gegaan met het mailen, probeert u het later nogmaals.';
  }
}
/* Einde mail versturen */
?>
 
Ik weet eigenlijk ook niet waarom ik dat in het begin gedaan had. Maar toen ik je commentaar in het script doorlas dacht ik al dat het overbodig was.:)

Ben blij dat het nu een beetje duidelijker is geworden allemaal. Ik had een paar weken geleden een boek over php (handboek php5) gekocht om dit allemaal te leren, maar dat was helaas te moeilijk voor me. :confused:
Ik denk dat de schrijver dat boek bedoelt heeft voor mensen die al een basiskennis van php
hebben.

Hartstikke bedankt voor je hulp.
 
PHP5 is wel goed om daar mee te beginnen.

Het zal voornamelijk over het OOP (Object Oriented Programming) van PHP gaan en minder over bepaalde dingen werken.

Ik neem aan dat je vraag is opgelost? Zou je dan rechtsonder de status op "Opgelost" willen zetten?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan