php script voor contactformulier

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Sammied D

Sammied D

08/12/2014 23:19:31
Quote Anchor link
Goedenavond,

Ik ben voor het eerst met php aan het werk, en moet eerlijk zeggen dat ik er nog vrij weinig van snap.
Wat ik graag wil doen is een SIMPEL contactformulier maken voor op mijn website. Momenteel zie ik het allemaal even niet meer, dus hoop dat er hier iemand is die me weer even een stukje vooruit kan helpen.

Ik heb nu onderstaand script staan, en moet zeggen dat het echt voor een groot deel soepel verloopt, echter zijn er 2 dingetjes waar ik tegen aan loop en krijg zelf de oplossing niet gevonden:

- zodra ik via de mail de info uit het ingevulde en verzonden contactformulier binnenkrijg, staat netjes alle info erin, behalve of iemand een vinkje heeft gezet in de checkbox van de nieuwsbrief. Dat kan ik dus niet terugzien in de mail. Ik heb al veel verschillende codes geprobeerd maar krijg het gewoon niet voor elkaar. (als ik het test, en dus zelf het formulier invul op mijn website is er geen probleem met invullen, kan aanvinken/uitvinken alles, het gaat dus puur om het feit dat de info hiervan niet bij mijn e-mailaccount binnenkomt. Wat doe ik fout?

- als er een bepaald/meerdere velden niet zijn ingevuld en er wordt op 'verstuur bericht' geklikt, komt men op een volledig witte pagina waar dan staat bijv: 'Helaas, het voornaam veld is verplicht maar is nu niet ingevuld'
Nu vind ik dat niet zo netjes met die witte pagina, liever in mijn eigen website stijl. Maar begreep via zoektocht op internet dat als ik die controle van de velden op de pagina van het formulier zelf wil doen ik dan moet werken met javascript? Ik houd het liever bij php, om niet nog een onbekende taal er voor mezelf bij te halen... Hoe kan ik dit dan het beste in php doen? (die controle hoeft van mij niet perse op de pagina van het formulier zelf als dit geen mogelijkheid is met php)

Sorry hoop dat mijn vraag niet al te uitgebreid is, en wist ook niet zeker of ik 2 vragen in 1 topic mocht plaatsen, zo niet zal ik het aanpassen.

De PHP code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<?php

// Header e-mail instellen, zodat nl2br() werkt
$headers = "MIME-version: 1.0\r\n";
$headers = "content-type: text/html;charset=utf-8\r\n";
$headers = "From: $email\n ".$_POST['voornaam']." <".$_POST['achternaam'].">\r\n"; // Headers, zodat we html kunnen gebruiken in de mail, en van wie de mail komt

$naar = '[email protected]'; // Waar moet het naartoe?
$onderwerp = 'Contactformulier via website'; // Het onderwerp van het bericht

// Invoer uit het contactformulier

$voornaam = trim($_POST['voornaam']); // trim gets rid of any white space
$achternaam = trim($_POST['achternaam']); // trim gets rid of any white space
$email = trim($_POST['email']); // trim gets rid of any white space
$bericht = trim($_POST['bericht']); // trim gets rid of any white space
$fout = false; // Om te kijken straks of er wat fout is
  
   if(isset($_POST['newsletter'])) {
   $newsletter = "yes";
   }
else {
   $newsletter = "no";
}


    if($_SERVER['REQUEST_METHOD'] == 'POST') // Controle of een formulier gepost is

    if(isset($_POST['versturen'])) // CONTROLEREN OF HET FORMULIER VERZONDEN IS(DOOR OP DE VERSTUUR BERICHT KNOP TE KLIKKEN)
{
 

 
// ALS HET VOORNAAM VELD NIET IS INGEVULD
  if(empty($voornaam))
  {

    print '<p>Helaas, het voornaam veld is verplicht maar is nu niet ingevuld!</p>';
    $fout = true; // ZORGEN DAT HET SCRIPT ZOMETEEN WEET DAT ER WAT FOUT IS
  }
  
// ALS HET ACHTERNAAM VELD NIET IS INGEVULD
  if(empty($achternaam))
  {

    print '<p>Helaas, het achternaam veld is verplicht maar is nu niet ingevuld!</p>';
    $fout = true;
  }

  
// ALS HET EMAIL VELD NIET IS INGEVULD
  if(empty($email))
  {

    print '<p>Helaas, het email veld is verplicht maar is nu niet ingevuld!</p>';
    $fout = true;
  }

  if(!filter_var($email, FILTER_VALIDATE_EMAIL)) // Als het email adres niet correct is
  {
    print '<p>Helaas, het email adres is niet correct!</p>';
    $fout = true;
  }

  
// ALS HET BERICHT VELD NIET IS INGEVULD
  if(empty($bericht))
  {

    print '<p>Helaas, het bericht veld is verplicht maar is nu niet ingvuld!</p>';
    $fout = true;
  }


  
// ALS ER NIKS FOUT IS (ALLES IS DUS NETJES INGEVULD)
  if($fout == false)
  {

  
// EEN AFZENDER INSTELLEN ZODAT JE KUNT REAGEREN.
    $headers = 'From: ' . $voornaam . ' ' . $achternaam . '<' . $email . '>';

 
 
    // STUUR DEZE MAIL DOOR GEBRUIK TE MAKEN VAN PHPs mail() FUNCTIE
    if(mail($naar, $onderwerp, nl2br($bericht), $headers))
    // REDIRECT
    header("Location:/bedankt.php");
      
  
    else
    {
    header("Location:/fout.php");
    
    }
  }
}



?>
 
PHP hulp

PHP hulp

22/11/2024 07:22:03
 
Frank Nietbelangrijk

Frank Nietbelangrijk

09/12/2014 01:00:17
Quote Anchor link
Oké je gaat er wel komen hoor.

je overschrijft tot drie keer aan toe de $headers variabele. Als je een variabele met tekst (string) aan een andere string wilt toevoegen dan kun je de . (punt) gebruiken.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$a
= 'php' . 'hulp';
?>

of:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$a
= 'php';
$a .= 'hulp';
?>


Verder zou je kunnen overwegen om de fouten niet direct te echo-en maar eerst even in een variabele te zetten.

Op regel 82 ga je naar een gebruiker doorsturen naar een aparte pagina om daar de foutmeldingen te tonen.

Tipje:
Hou alles op één pagina. Ook je <form>. Stuur de gebruiker pas door naar een andere pagina als alles goed ingevuld is en het bericht verzonden is. Zolang het formulier niet ingevuld is laat je gewoon telkens dezelfde pagina zien.
Zet in deze ene pagina je PHP code bovenin en je formulier/html onderin. Zet tussen die html ook echo's die de foutmeldingen laten zien. er zijn verschillende manieren om foutmeldingen verborgen te houden als deze niet gezien hoeven te worden maar het meest makkelijk is wellicht om de string leeg te laten als het veld goed ingevuld is. een lege string ( $fout1 = '' ) zie je immers niet.

Beetje deze structuur:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php

function validate()
{

    // ............

    return true;
}


if ($_SERVER['REQUEST_METHOD'] == 'POST')
    if(validate())
    {

        // ... email versturen
        
        // nu naar een andere pagina sturen

        header('Location: index.php');
    }

?>

<html>
    <head>
        <title>Contact</title>
        <meta charset="UTF-8">
    </head>
    <body>
    <form action="" method="post">

        <!-- formuliervelden -->

    </form>
    </body>
</html
Gewijzigd op 09/12/2014 01:06:36 door Frank Nietbelangrijk
 
Johan de wit

johan de wit

09/12/2014 01:01:53
Quote Anchor link
- zodra ik via de mail de info uit het ingevulde en verzonden contactformulier binnenkrijg, staat netjes alle info erin, behalve of iemand een vinkje heeft gezet in de checkbox van de nieuwsbrief. Dat kan ik dus niet terugzien in de mail. Ik heb al veel verschillende codes geprobeerd maar krijg het gewoon niet voor elkaar. (als ik het test, en dus zelf het formulier invul op mijn website is er geen probleem met invullen, kan aanvinken/uitvinken alles, het gaat dus puur om het feit dat de info hiervan niet bij mijn e-mailaccount binnenkomt. Wat doe ik fout?

ANTWOORD:
ik ben niet zo bekend met de checkboxen.

- als er een bepaald/meerdere velden niet zijn ingevuld en er wordt op 'verstuur bericht' geklikt, komt men op een volledig witte pagina waar dan staat bijv: 'Helaas, het voornaam veld is verplicht maar is nu niet ingevuld'
Nu vind ik dat niet zo netjes met die witte pagina, liever in mijn eigen website stijl. Maar begreep via zoektocht op internet dat als ik die controle van de velden op de pagina van het formulier zelf wil doen ik dan moet werken met javascript? Ik houd het liever bij php, om niet nog een onbekende taal er voor mezelf bij te halen... Hoe kan ik dit dan het beste in php doen? (die controle hoeft van mij niet perse op de pagina van het formulier zelf als dit geen mogelijkheid is met php)

ANTWOORD:
hiervoor kan je javascript gebruiken form validator.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

09/12/2014 01:40:41
Quote Anchor link
checkboxen worden alleen als post variabele meegestuurd als ze aangevinkt zijn. anders ontvang je niets.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
echo '<pre>';
print_r($_POST);
echo '</pre>';
?>

Zet dat maar eens bovenin je script.

Javascript is absoluut niet perse nodig. Zoals ik al eerder aangaf kun je met php prima foutmeldingen genereren.
Alleen als je wilt dat je pagina niet ververst wordt is javascript wel een must.
 
Johan de wit

johan de wit

09/12/2014 02:33:11
Quote Anchor link
Wat houd pre in?
 
Randy vsf

Randy vsf

09/12/2014 08:05:20
Quote Anchor link
Johan de wit op 09/12/2014 02:33:11:
Wat houd pre in?


http://www.w3schools.com/tags/tag_pre.asp
 
Kevin J

Kevin J

09/12/2014 09:42:26
Quote Anchor link
Ik typ in op google: check if checkbox is set or not
Bovenste is:
http://stackoverflow.com/questions/4554758/how-to-read-if-a-checkbox-is-checked-in-php

En dat werkt dan zou je code er zo iets uit moeten zien
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
if (isset($_POST['checkbox'])) {
echo "Whoe hij is gezet";
} else {
echo "jammer joh hij is niet gezet";
}


Naast dat zou ik aanraden ook het aantal tekens in bericht te tellen anders kan je zo honderd berichten heel gemakelijk binnen krijgen, dus bijvoorbeeld
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
if (strlen($_POST['bericht']) <= 9){
    print '<p>Helaas, het bericht moet minimaal 10 tekens bevatten</p>';
    $fout = true;
}
 
Sammied D

Sammied D

14/12/2014 22:43:32
Quote Anchor link
Echt heel erg bedankt voor alle reacties!

Ik heb er dus nu 1 document van gemaakt met html en php in 1 en het contact.php genoemd.

Ik heb met jullie info geprobeerd om mn document te verbeteren. Nu kan ik het alleen niet testen, want als ik het oproep krijg ik de foutmelding
Parse error: syntax error, unexpected '(', expecting '&' or T_VARIABLE op regel 74. Ik had al het vermoeden dat ik dat stukje niet goed had gedaan, maar hoe moet het dan??
Wellicht zitten er ook nog meer fouten in buiten die regel 74, maar dat kan ik nu dus niet zien.
Wat moet ik bijv bij dat gedeelte van function validate zetten?

Super bedankt alvast weer!!


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<?php

// Kijken welke gegevens er gestuurd zijn naar deze pagina
echo '<pre>';
print_r($_POST);
echo '</pre>';

// Header e-mail instellen, zodat nl2br() werkt
$headers = "MIME-version: 1.0\r\n";
$headers = "content-type: text/html;charset=utf-8\r\n";
$headers .= "From: $email\n ".$_POST['voornaam']." <".$_POST['achternaam'].">\r\n"; // EEN AFZENDER INSTELLEN ZODAT JE KUNT REAGEREN.

$naar = '[email protected]'; // Waar moet het naartoe?
$onderwerp = 'Contactformulier via website'; // Het onderwerp van het bericht

// Invoer uit het contactformulier

$voornaam = trim($_POST['voornaam']); // trim gets rid of any white space
$achternaam = trim($_POST['achternaam']); // trim gets rid of any white space
$email = trim($_POST['email']); // trim gets rid of any white space
$bericht = trim($_POST['bericht']); // trim gets rid of any white space
$fout = false; // Om te kijken straks of er wat fout is

if (strlen($_POST['bericht']) <= 9){
    print '<p>Helaas, het bericht moet minimaal 10 tekens bevatten</p>';
    $fout = true;
}



 if (isset($_POST['newsletter'])) {
echo "nieuwsbrief ja";
}
else {
echo "nieuwsbrief nee";
}

 
  
if(isset($_POST['versturen'])) // CONTROLEREN OF HET FORMULIER VERZONDEN IS(DOOR OP DE VERSTUUR BERICHT KNOP TE KLIKKEN)
{
 
 
if (!empty($_POST)) {  
//formulier is verzonden
//controleer velden:

 if (empty($_POST['voornaam'])) $veldfout['voornaam'] = TRUE;
 if (empty($_POST['achternaam'])) $veldfout['achternaam'] = TRUE;
 if (empty($_POST['email'])) $veldfout['email'] = TRUE;
 if(!filter_var($email, FILTER_VALIDATE_EMAIL)) // Als het email adres niet correct is
  {
 if (empty($_POST['bericht'])) $veldfout['bericht'] = TRUE;
 
 //afhandeling
if (isset($veldfout)) {
    //formulier incorrect ingevuld
    echo 'Niet alle velden zijn ingevuld.';
}

else {
    //formulier correct
    echo 'Alle velden zijn ingevuld.';
}
 

 
function
validate()
{

    // wat moet ik hier zetten???

    return true;
}



if($_SERVER['REQUEST_METHOD'] == 'POST') // Controle of een formulier gepost is
 if(validate())
    {

     // ... email versturen
     function mail($naar, $onderwerp, nl2br($bericht), $headers .)
     {

        
     // nu naar een andere pagina sturen
     header('Location: bedankt.php');
    }
  }
}

?>







Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
</head>

<body>

<form method="post" action="contact.php">

  <ul>
    <li>Je voornaam *</li>
    <li><input type="text" name="voornaam" /></li>
    <?php if ($veldfout['voornaam'] == TRUE) echo 'Voornaam verplicht:<br />'; ?>
<br>
<br>
    <li>Je achternaam *</li>
    <li><input type="text" name="achternaam" /></li>
    <?php if ($veldfout['achternaamnaam'] == TRUE) echo 'Achternaam verplicht:<br />'; ?>
<br>
<br>
    <li>Je e-mail adres *</li>
    <li><input type="text" name="email" /></li>
    <?php if ($veldfout['email'] == TRUE) echo 'Email verplicht:<br />'; ?>
<br>
<br>
    <li>Bericht *</li><br>
    <li><textarea cols="50" rows="12" name="bericht" wrap="virtual"></textarea></li>
    <?php if ($veldfout['bericht'] == TRUE) echo 'Bericht verplicht:<br />'; ?>
<br>
<br>  
    <input type="checkbox" name="newsletter" value="newsletteryes" checked   <?PHP print $newsletter; ?>>
    <label for="newsletter">Ja, ik ontvang graag de nieuwsbrief</label><br>
<br>
<br>
    <li><input type="reset" value="Begin opnieuw" /> <input type="submit" name="versturen" value="Verstuur bericht" /></li>
  </ul>
  <p>Alle velden gemarkeerd met een * zijn verplicht.</p>
<br>
<br>
</form>


</body>
</html>
Gewijzigd op 14/12/2014 23:10:43 door Sammied D
 
Frank Nietbelangrijk

Frank Nietbelangrijk

14/12/2014 22:54:23
Quote Anchor link
kun je de code die je gepost hebt even tusen [ c o d e ] en [ / c o d e ] (maar dan zonder spaties) zetten?

Zie ook veel gestelde vragen
 
Sammied D

Sammied D

14/12/2014 23:11:52
Quote Anchor link
Frank Nietbelangrijk op 14/12/2014 22:54:23:
kun je de code die je gepost hebt even tusen [ c o d e ] en [ / c o d e ] (maar dan zonder spaties) zetten?

Zie ook veel gestelde vragen


Excuses! Heb ik nu gedaan!
 
Frank Nietbelangrijk

Frank Nietbelangrijk

15/12/2014 00:01:41
Quote Anchor link
Top! dat gaat beter :)

Het onderste stukje van je code klopt niet erg en dan gaat het om echt simpele basic dingetjes
haakje open en sluiten anders klopt het niet. Gebruik je wel een PHP editor?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php



if($_SERVER['REQUEST_METHOD'] == 'POST') // Controle of een formulier gepost is
{
    if(validate())
    {

        // ... email versturen
        mail($naar, $onderwerp, nl2br($bericht), $headers);
        
        // nu naar een andere pagina sturen
        header('Location: bedankt.php');
    }
}

?>


Ik denk dat met name fucties nog nieuw zijn voor je. Er zijn een tweetal functies:
a) functies die al in PHP aanwezig zijn. Deze zijn allemaal terug te vinden op php.net. mail() is een voorbeeld van een standaard php functie.
b) functies die je zelf geschreven hebt. Mijn validate() functie is daar een voorbeeld van.
Zie voor zelf functies schrijven deze pagina: http://www.phptuts.nl/view/39/7/

De bedoeling van die validate functie is dat je daarin een aantal testjes doet om te kijken of het formulier wel goed ingevuld is.

Toevoeging op 15/12/2014 00:36:38:

Als je het niet erg vindt beginnen we even opnieuw. We laten het hele email gebeuren er nog even uit. Ik heb hier een werkend begin voor je zoals het op een juiste manier kan. Het formulier heeft nog maar één invoerveld. Kijk maar eens goed hoe dit werkt (testen!).
Probeer daarna één ander formulierveld toe te voegen en ook deze te valideren. Die email versturen komt wel helemaal aan het einde als het formulier goed werkt.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php

function validate()
{

    global $error; // we gebruiken de $error van de 'global space' anders zou deze variabele bij het verlaten van de functie niet meer in het geheugen aanwezig zijn
    
    if(strlen($_POST['voornaam']) < 2) { // als de voornaam korter is als twee karakters
        $error = 'Vul aub uw naam in!';
        return FALSE;  // verlaat de functie en geef een FALSE terug
    }

    return TRUE; // uiteindelijk als er geen fouten gevonden zijn geven we een TRUE terug
}

// initialisatie van de variabelen
$error = '';
$voornaam = '';

if($_SERVER['REQUEST_METHOD'] == 'POST') // Controle of een formulier gepost is
{
    $voornaam = $_POST['voornaam']; // overschrijf de waarde van de variabele $voornaam
    
    if(validate()) // we roepen onze functie validate aan en kijken of we een TRUE of FALSE terugkrijgen.
    {
        // mail($naar, $onderwerp, nl2br($bericht), $headers);
        
        // nu naar een andere pagina sturen

        header('Location: bedankt.php');
     }
}

?>

<!DOCTYPE html>
<html>
    <head>
        
        <title>Contactform</title>
        <meta charset="UTF-8">
        
    </head>

    <body>

        <form method="post" action="">
            <div id="error">
                <?php echo $error; ?>
            </div>
            <div class="form-row">
                <label for="voornaam">Je voornaam *</label>
                <input type="text" id="voornaam" name="voornaam" value="<?php echo $voornaam; ?>" />
            </div>
            <div class="form-row">
                <input type="submit" value="Verzenden" />
            </div>
        </form>

    </body>
</html>
Gewijzigd op 15/12/2014 00:39:39 door Frank Nietbelangrijk
 
Sammied D

Sammied D

18/12/2014 23:47:42
Quote Anchor link
Ik gebruik Notepad++, kan ik beter iets anders gebruiken? Het klopt dat ik er nog niet veel van snap, het kwartje wil nog niet echt vallen, ondanks dat ik toch al meerdere tutorials heb gelezen. Dus ik ben erg blij met de hulp die ik hier krijg.

Ik heb het nieuwe script verder uitgewerkt, zie hieronder. Ik heb het ook getest en het werkt helemaal prima! :)

Ik heb alleen de nieuwsbrief checkbox er nog niet bijgezet, omdat ik nog steeds niet zo goed weet hoe ik dat nou moet doen, zodat ik het ook kan zien in de mail die ik binnenkrijg als iemand deze heeft aangevinkt. (de code van hierboven die gegeven werd had ik ook al geprobeerd maar daarmee kreeg ik ook geen notitie in de mail ervan. Ik weet dat je dit alleen kunt zien als het is aangevinkt maar als ik het test als het aangevinkt is zie ik het nog niet) Overigens lees ik ook op internet dat ik beter een radio button kan gebruiken voor de nieuwbrief ipv de checkbox?? (omdat het maar om 1 keuze gaat)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php

function validate()
{

    global $error; // we gebruiken de $error van de 'global space' anders zou deze variabele bij het verlaten van de functie niet meer in het geheugen aanwezig zijn
    
    if(strlen($_POST['voornaam']) < 2) { // als de voornaam korter is als twee karakters
        $error = 'Vul aub uw voornaam in!';
        return FALSE;  // verlaat de functie en geef een FALSE terug
    }
    
    if(strlen($_POST['achternaam']) < 2) { // als de achternaam korter is als twee karakters
        $error = 'Vul aub uw achternaam in!';
        return FALSE;  // verlaat de functie en geef een FALSE terug
    }
    
    if(strlen($_POST['email']) < 6) { // als het e-mailadres korter is als zes karakters
        $error = 'Vul aub uw e-mail adres in!';
        return FALSE;  // verlaat de functie en geef een FALSE terug
    }
    
    if(strlen($_POST['bericht']) < 9) { // als het bericht korter is als negen karakters
        $error = 'Uw bericht is te kort. Uw bericht moet minstens 10 karakters bevatten. ';
        return FALSE;  // verlaat de functie en geef een FALSE terug
    }

    return TRUE; // uiteindelijk als er geen fouten gevonden zijn geven we een TRUE terug
}

// initialisatie van de variabelen
$error = '';
$voornaam = '';
$achternaam = '';
$email = '';
$bericht = '';

if($_SERVER['REQUEST_METHOD'] == 'POST') // Controle of een formulier gepost is
{
    $voornaam = $_POST['voornaam']; // overschrijf de waarde van de variabele $voornaam
    $achternaam = $_POST['achternaam']; // overschrijf de waarde van de variabele $achternaam
    $email = $_POST['email']; // overschrijf de waarde van de variabele $email
    $bericht = $_POST['bericht']; // overschrijf de waarde van de variabele $bericht
    
    if(validate()) // we roepen onze functie validate aan en kijken of we een TRUE of FALSE terugkrijgen.
    {
        // mail($naar, $onderwerp, nl2br($bericht), $headers);
        
        // nu naar een andere pagina sturen

        header('Location: bedankt.php');
     }
}

?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
</head>

<body>

<form method="post" action="contact.php">

       <div id="error">
            <?php echo $error; ?>
       </div>

           <div class="form-row">
                <label for="voornaam">Je voornaam *</label>
                <input type="text" id="voornaam" name="voornaam" value="<?php echo $voornaam; ?>" />
           </div>
<br>          
           <div class="form-row">
                <label for="achternaam">Je achternaam *</label>
                <input type="text" id="achternaam" name="achternaam" value="<?php echo $achternaam; ?>" />
           </div>
<br>          
        <div class="form-row">
                <label for="email">Je e-mail adres *</label>
                <input type="text" id="email" name="email" value="<?php echo $email; ?>" />
           </div>
<br>          
           <div class="form-row">
                <label for="bericht">Je bericht *</label>
                <textarea cols="50" rows="12" name="bericht" wrap="virtual" value="<?php echo $bericht; ?>" ></textarea>
           </div>
<br>
            <div class="form-row">
                <input type="submit" value="Verzenden" />
            </div>

  <p>Alle velden gemarkeerd met een * zijn verplicht.</p>
<br>
<br>
</form>


</body>
</html>
 
Kevin J

Kevin J

18/12/2014 23:50:10
Quote Anchor link
Ik zelf gebruik subliem text 3
Officieel betaald maar je kan ook crack krijgen
 
- Ariën  -
Beheerder

- Ariën -

19/12/2014 00:18:58
Quote Anchor link
Ikzelf raad een vinkje aan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input type="checkbox" name="newsletter" value="1">Ik wil de nieuwsbrief!


Met $_POST['newsletter'] kan je dan kijken of diegene een nieuwsbrief wilt. Deze variabele kan je in je mail() gebruiken.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

19/12/2014 10:35:03
Quote Anchor link
Sammied D op 18/12/2014 23:47:42:
Ik gebruik Notepad++, kan ik beter iets anders gebruiken?


Ja, het beste is een IDE. Bijvoorbeeld het gratis NetBeans. Dergelijke programma's geven kleurtjes aan je code en wijzen je op tekstuele fouten. En dat is maar een heel klein stukje van de mogelijkheden die een IDE je biedt.

Toevoeging op 19/12/2014 10:39:00:

Een checkbox is voor jouw nieuwsbrief het meest logisch

Toevoeging op 19/12/2014 10:52:37:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php

// initialisatie van de variabelen
$error = '';
$voornaam = '';
$achternaam = '';
$email = '';
$bericht = '';
$nieuwsbericht = false;

if($_SERVER['REQUEST_METHOD'] == 'POST') // Controle of een formulier gepost is
{
    $voornaam = $_POST['voornaam']; // overschrijf de waarde van de variabele $voornaam
    $achternaam = $_POST['achternaam']; // overschrijf de waarde van de variabele $achternaam
    $email = $_POST['email']; // overschrijf de waarde van de variabele $email
    $bericht = $_POST['bericht']; // overschrijf de waarde van de variabele $bericht

    if(isset($_POST['newsletter']))
    $nieuwsbericht = true;
    
    if(validate()) // we roepen onze functie validate aan en kijken of we een TRUE of FALSE terugkrijgen.
    {
        // mail($naar, $onderwerp, nl2br($bericht), $headers);
        
        // nu naar een andere pagina sturen

        header('Location: bedankt.php');
     }
}

?>

<div class="form-row">
    <input type="checkbox" id="newsletter" name="newsletter" value="1" <?php if($nieuwsbericht) echo 'checked="checked"'; ?> />
    <label for="newsletter">Ik wil de nieuwsbrief!</label>
</div>


Toevoeging op 19/12/2014 10:59:32:

regel 9, 18,19, 30 t/m 33 overnemen in je bestaande code zou je formulier compleet moeten maken.

Daarna kun je de tekst in je email aanpassen met bijvoorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$bericht
= 'bla bla bla ';
if($nieuwsbericht) {
    $bericht .= 'Gebruiker wenst een nieuwsbrief te ontvangen.';
}
else {
    $bericht .= 'Gebruiker wenst GEEN nieuwsbrief te ontvangen.';
}


mail($naar, $onderwerp, nl2br($bericht), $headers);
?>
 
Sammied D

Sammied D

20/12/2014 23:41:25
Quote Anchor link
Ik ben weer uren en uren aan het rommelen geweest, maar krijg het nog steeds niet werkend. Ik heb wss weer iets fout gedaan pfff, maar kom er niet achter wat...
(heb overigens ook geprobeerd NetBeans te installeren, maar dat lukte niet met de melding omdat ik een 32-bits systeem heb) Ik ben ook niet van plan om PHP nog verder te gebruiken nadat ik dit scriptje werkend heb.

Onderstaand het script zoals ik het nu heb. Wanneer ik een test uitvoer en dus het contactformulier invul op mijn website en verstuur, krijg ik het gewoon netjes binnen in mijn e-mailbox. Maar het probleem wat zich nu voordoet is dat er helemaal niks in de mail staat! De enige info die ik zie in de mail is de voornaam van de afzender en het onderwerp. Terwijl ik toch gewoon alle gegevens op de website in het contactformulier gewoon volledig in heb gevuld, dus voornaam, achternaam, e-mailadres, bericht, nieuwsbrief aangevinkt. Maar dit krijg ik dus allemaal niet door.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?php

if(isset($_POST['verzendenknop'])) {
// HEADERS
$headers = "From: $email\n ".$_POST['voornaam']." <".$_POST['achternaam'].">\r\n"; // de afzender
$headers .= "Reply-To: $email ($voornaam)\r\n";
$headers .= "Return-Path: $email ($voornaam)\r\n";
// headers voor html-mail:
$headers .= "MIME-version: 1.0\r\n"; // geeft aan dat het bericht gebruik maakt van de Multipurpose Internet Mail Extensions (MIME). Staat toe HTML in emailberichten te gebruiken.
$headers .= "content-type: text/html;charset=utf-8\r\n"; // geeft aan dat de inhoud een combinatie van tekst en HTML is en geeft tevens aan welke karakterset is gebruikt.
// overige mail-gerelateerde zaken

$naar = '[email protected]'; // Waar moet het naartoe?
$onderwerp = 'Contactformulier via website'; // Het onderwerp van het bericht

// Verstuur de e-mail

mail($naar, $onderwerp, nl2br($bericht), $headers);

function
validate()
{

    global $error; // we gebruiken de $error van de 'global space' anders zou deze variabele bij het verlaten van de functie niet meer in het geheugen aanwezig zijn
    
    if(strlen($_POST['voornaam']) < 2) { // als de voornaam korter is als twee karakters
        $error = 'Vul aub uw voornaam in!';
        return FALSE;  // verlaat de functie en geef een FALSE terug
    }
    
    if(strlen($_POST['achternaam']) < 2) { // als de achternaam korter is als twee karakters
        $error = 'Vul aub uw achternaam in!';
        return FALSE;  // verlaat de functie en geef een FALSE terug
    }
    
    if(strlen($_POST['email']) < 6) { // als het e-mailadres korter is als zes karakters
        $error = 'Vul aub uw e-mail adres in!';
        return FALSE;  // verlaat de functie en geef een FALSE terug
    }
    
    if(strlen($_POST['bericht']) < 9) { // als het bericht korter is als negen karakters
        $error = 'Uw bericht is te kort. Uw bericht moet minstens 10 karakters bevatten. ';
        return FALSE;  // verlaat de functie en geef een FALSE terug
    }

    return TRUE; // uiteindelijk als er geen fouten gevonden zijn geven we een TRUE terug
}

// initialisatie van de variabelen
$error = '';
$voornaam = '';
$achternaam = '';
$email = '';
$bericht = '';
$nieuwsbericht = false;
if($nieuwsbericht) {
    $bericht .= 'Gebruiker wenst een nieuwsbrief te ontvangen.';
}
else {
    $bericht .= 'Gebruiker wenst GEEN nieuwsbrief te ontvangen.';
}


// Controle of een formulier gepost is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{



    // Invoer uit het contactformulier
    $voornaam = $_POST['voornaam']; // overschrijf de waarde van de variabele $voornaam
    $achternaam = $_POST['achternaam']; // overschrijf de waarde van de variabele $achternaam
    $email = $_POST['email']; // overschrijf de waarde van de variabele $email
    $bericht = $_POST['bericht']; // overschrijf de waarde van de variabele $bericht
    
    if(isset($_POST['newsletter']))
    $nieuwsbericht = true;
    
    if(validate()) // we roepen onze functie validate aan en kijken of we een TRUE of FALSE terugkrijgen.
    {
        // mail($naar, $onderwerp, nl2br($bericht), $headers);
        
        // nu naar een andere pagina sturen

        header('Location: bedankt.php');
     }
}
}

?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
</head>

<body>

<form method="post" action="contact.php">

       <div id="error">
            <?php echo $error; ?>
       </div>

           <div class="form-row">
                <label for="voornaam">Je voornaam *</label>
                <input type="text" id="voornaam" name="voornaam" value="<?php echo $voornaam; ?>" />
           </div>
<br>          
           <div class="form-row">
                <label for="achternaam">Je achternaam *</label>
                <input type="text" id="achternaam" name="achternaam" value="<?php echo $achternaam; ?>" />
           </div>
<br>          
        <div class="form-row">
                <label for="email">Je e-mail adres *</label>
                <input type="text" id="email" name="email" value="<?php echo $email; ?>" />
           </div>
<br>          
           <div class="form-row">
                <label for="bericht">Je bericht *</label>
                <textarea cols="50" rows="12" name="bericht" wrap="virtual" value="<?php echo $bericht; ?>" ></textarea>
           </div>
<br>
           <div class="form-row">
                <input type="checkbox" id="newsletter" name="newsletter" value="1" <?php if($nieuwsbericht) echo 'checked="checked"'; ?> />
                <label for="newsletter">Ja, ik ontvang graag de nieuwsbrief</label>
           </div>

            <div class="form-row">
                <input type="submit" name="verzendenknop" value="Verzenden" />
            </div>

  <p>Alle velden gemarkeerd met een * zijn verplicht.</p>
<br>
<br>
</form>


</body>
</html>
 
- Ariën  -
Beheerder

- Ariën -

20/12/2014 23:47:43
Quote Anchor link
Je kan ook direct $_POST['bericht'] in je mail() gebruiken.
 
Kevin J

Kevin J

21/12/2014 07:40:03
Quote Anchor link
Kuch kuch
mysql_real_escape_string
Kuch Kuch
 
- Ariën  -
Beheerder

- Ariën -

21/12/2014 10:05:37
Quote Anchor link
Kevin Jager op 21/12/2014 07:40:03:
Kuch kuch
mysql_real_escape_string
Kuch Kuch

Hoezo? Waar zie jij een database?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

21/12/2014 14:33:07
Quote Anchor link
Misschien kun je deze installeren: http://www.software.akker-huis.nl/php-designer.php



Toevoeging op 21/12/2014 14:48:51:

Nou vooruit omdat het bijna kerst is ..

Het is gewoon één bestand!
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<?php

function validate()
{

    global $error; // we gebruiken de $error van de 'global space' anders zou deze variabele bij het verlaten van de functie niet meer in het geheugen aanwezig zijn

    if(strlen($_POST['voornaam']) < 2) { // als de voornaam korter is als twee karakters
        $error = 'Vul aub uw voornaam in!';
        return FALSE;  // verlaat de functie en geef een FALSE terug
    }

    if(strlen($_POST['achternaam']) < 2) { // als de achternaam korter is als twee karakters
        $error = 'Vul aub uw achternaam in!';
        return FALSE;  // verlaat de functie en geef een FALSE terug
    }

    if(strlen($_POST['email']) < 6) { // als het e-mailadres korter is als zes karakters
        $error = 'Vul aub uw e-mail adres in!';
        return FALSE;  // verlaat de functie en geef een FALSE terug
    }

    if(strlen($_POST['bericht']) < 9) { // als het bericht korter is als negen karakters
        $error = 'Uw bericht is te kort. Uw bericht moet minstens 10 karakters bevatten. ';
        return FALSE;  // verlaat de functie en geef een FALSE terug
    }

    return TRUE; // uiteindelijk als er geen fouten gevonden zijn geven we een TRUE terug
}

function
sendMail($voornaam, $achternaam, $email, $bericht, $nieuwsbericht)
{

    // HEADERS
    $headers = "From: $email\n ".$voornaam." <".$achternaam.">\r\n"; // de afzender
    $headers .= "Reply-To: $email ($voornaam)\r\n";
    $headers .= "Return-Path: $email ($voornaam)\r\n";
    // headers voor html-mail:
    $headers .= "MIME-version: 1.0\r\n"; // geeft aan dat het bericht gebruik maakt van de Multipurpose Internet Mail Extensions (MIME). Staat toe HTML in emailberichten te gebruiken.
    $headers .= "content-type: text/html;charset=utf-8\r\n"; // geeft aan dat de inhoud een combinatie van tekst en HTML is en geeft tevens aan welke karakterset is gebruikt.
    // overige mail-gerelateerde zaken

    $naar = '[email protected]'; // Waar moet het naartoe?
    $onderwerp = 'Contactformulier via website'; // Het onderwerp van het bericht

    if($nieuwsbericht) {
        $bericht .= "\r\n" . 'Gebruiker wenst een nieuwsbrief te ontvangen.';
    }
else {
        $bericht .= "\r\n" . 'Gebruiker wenst GEEN nieuwsbrief te ontvangen.';
    }

    // Verstuur de e-mail
    return  mail($naar, $onderwerp, $bericht, $headers);
}


// initialisatie van de variabelen
$error = '';
$voornaam = '';
$achternaam = '';
$email = '';
$bericht = '';
$nieuwsbericht = false;

if($_SERVER['REQUEST_METHOD'] == 'POST')
{

    // Invoer uit het contactformulier
    $voornaam = $_POST['voornaam']; // overschrijf de waarde van de variabele $voornaam
    $achternaam = $_POST['achternaam']; // overschrijf de waarde van de variabele $achternaam
    $email = $_POST['email']; // overschrijf de waarde van de variabele $email
    $bericht = $_POST['bericht']; // overschrijf de waarde van de variabele $bericht

    if(isset($_POST['newsletter']))
        $nieuwsbericht = true;

    if(validate()) // we roepen onze functie validate aan en kijken of we een TRUE of FALSE terugkrijgen.
    {
        if(sendMail($voornaam, $achternaam, $email, $bericht, $nieuwsbericht)) {
            // nu naar een andere pagina sturen
            header('Location: bedankt.php');
        }
else {
            echo 'Het bericht kon helaas niet verzonden worden.';
        }

        exit;
     }
}


?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
</head>

<body>

<form method="post" action="">

       <div id="error">
            <?php echo $error; ?>
       </div>

           <div class="form-row">
                <label for="voornaam">Je voornaam *</label>
                <input type="text" id="voornaam" name="voornaam" value="<?php echo $voornaam; ?>" />
           </div>
<br>          
           <div class="form-row">
                <label for="achternaam">Je achternaam *</label>
                <input type="text" id="achternaam" name="achternaam" value="<?php echo $achternaam; ?>" />
           </div>
<br>          
        <div class="form-row">
                <label for="email">Je e-mail adres *</label>
                <input type="text" id="email" name="email" value="<?php echo $email; ?>" />
           </div>
<br>          
           <div class="form-row">
                <label for="bericht">Je bericht *</label>
                <textarea cols="50" rows="12" name="bericht" wrap="virtual" value="<?php echo $bericht; ?>" ></textarea>
           </div>
<br>
           <div class="form-row">
                <input type="checkbox" id="newsletter" name="newsletter" value="1" <?php if($nieuwsbericht) echo 'checked="checked"'; ?> />
                <label for="newsletter">Ja, ik ontvang graag de nieuwsbrief</label>
           </div>

            <div class="form-row">
                <input type="submit" name="verzendenknop" value="Verzenden" />
            </div>

  <p>Alle velden gemarkeerd met een * zijn verplicht.</p>
<br>
<br>
</form>


</body>
</html>
Gewijzigd op 22/12/2014 23:37:44 door Frank Nietbelangrijk
 
Sammied D

Sammied D

22/12/2014 23:26:05
Quote Anchor link
Oh echt onwijs bedankt Frank Nietbelangrijk!! Hij doet het nu weer!! Het mailtje komt goed binnen!! Alleen er is nu nog 1 dingetje wat raar doet...ik heb het meerdere keren getest en zowel wanneer ik de checkbox aanvink als wanneer ik de checkbox niet aanvink, krijg ik in de mail te staan 'Gebruiker wenst GEEN nieuwsbrief te ontvangen'. Hoe kan dit?
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.