Gegevens Formulier naar Email sturen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Vraag PHP

Vraag PHP

17/10/2017 14:15:45
Quote Anchor link
Hallo programmeurs. Ik wil zelf een website maken. Als de bezoekers een vraag hebben kunnen ze een formulier invullen. De gegevens worden dan naar mijn email adress doorgestuurd. Is dat mogelijk in PHP? Zoja, wat is daar de code voor?

Alvast bedankt!!!

Dit is mijn HTML 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
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>test</title>
        
    </head>
    <body>
    <form action="test.php" method="post">
    Voornaam:<br>
    <input type="text" name="voornaam"><br>
    Achternaam:<br>
    <input type="text" name="achternaam"><br>
    Email:<br>
    <input type="text" name="email"><br>
    Bericht:<br>
    <textarea name="bericht" rows="5">
    </textarea> <br>
    <input type="submit" value="Verzend">
    </form>
    </body>
</html>
Gewijzigd op 17/10/2017 16:36:51 door - Ariën -
 
PHP hulp

PHP hulp

30/11/2024 13:24:15
 
Adoptive Solution

Adoptive Solution

17/10/2017 14:52:25
Quote Anchor link
Als je had gevraagd hoe laat het is, had ik het antwoord geweten.

Maar voor dit soort complexe vragen gebruik ik meestal de zoekfunctie :

https://www.google.nl/search?q=php+email+form
 
- Ariën  -
Beheerder

- Ariën -

17/10/2017 16:39:43
Quote Anchor link
Inderdaad, wat Adaptive Solution zegt...
We willen je graag helpen, maar zelf wat zoekwerk uitvoeren vinden we ook erg fijn.

Verder heb ik even wat code-tags geplaatst. Gelieve deze zelf toe te voegen in het vervolg. Zie ook de UBB-codes in de 'Veelgestelde Vragen'.
 
Jan R

Jan R

17/10/2017 16:41:35
Quote Anchor link
Lijkt zelfs verdacht veel op huiswerk/schooltaak

PS het is e-mail niet Email
 
Vraag PHP

Vraag PHP

17/10/2017 18:12:48
Quote Anchor link
- Ariën - op 17/10/2017 16:39:43:
Inderdaad, wat Adaptive Solution zegt...
We willen je graag helpen, maar zelf wat zoekwerk uitvoeren vinden we ook erg fijn.

Verder heb ik even wat code-tags geplaatst. Gelieve deze zelf toe te voegen in het vervolg. Zie ook de UBB-codes in de 'Veelgestelde Vragen'.


Hallo iedereen, bedankt voor de snelle reacties! Ik zal even wat verduidelijken:
Het is inderdaad voor school. We moeten (vwo4) een website maken. We hebben javascript, html en css gehad. Alle andere talen mocht je opzoeken. Automatisch e-mails versturen kan alleen via php had ik gelezen. Ik heb (heel) veel op internet rondgekeken, YouTube filmpjes gekeken en veel dingen geprobeerd, maar niets lukte. Dus daarom dit forum.....

Ik heb de volgende code gevonden, maar die werkt niet. Als er iemand tijd over heeft, en er even naar zou willen kijken, zou je me er erg mee helpen!!!!
[email protected] is btw niet mijn echte email adress.
Groetjes Maarten

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
<?php
if(isset($_POST['submit'])){
    $to = "[email protected]"; // this is your Email address
    $from = $_POST['email']; // this is the sender's Email address
    $first_name = $_POST['first_name'];
    $last_name = $_POST['last_name'];
    $subject = "Form submission";
    $subject2 = "Copy of your form submission";
    $message = $first_name . " " . $last_name . " wrote the following:" . "\n\n" . $_POST['message'];
    $message2 = "Here is a copy of your message " . $first_name . "\n\n" . $_POST['message'];

    $headers = "From:" . $from;
    $headers2 = "From:" . $to;
    mail($to,$subject,$message,$headers);
    mail($from,$subject2,$message2,$headers2); // sends a copy of the message to the sender
    echo "Mail Sent. Thank you " . $first_name . ", we will contact you shortly.";
    // You can also use header('Location: thank_you.php'); to redirect to another page.
    }
?>


<!DOCTYPE html>
<head>
<title>Form submission</title>
</head>
<body>

<form action="" method="post">
First Name: <input type="text" name="first_name"><br>
Last Name: <input type="text" name="last_name"><br>
Email: <input type="text" name="email"><br>
Message:<br><textarea rows="5" name="message" cols="30"></textarea><br>
<input type="submit" name="submit" value="Submit">
</form>

</body>
</html>
Gewijzigd op 17/10/2017 18:32:22 door Vraag PHP
 
- Ariën  -
Beheerder

- Ariën -

17/10/2017 19:37:08
Quote Anchor link
Ik zou deze headers eens gebruiken:
http://wiki.phpbeginners.nl/index.php?title=De_juiste_mailheaders

Verder raad ik aan om error_reporting op E_ALL te zetten, en display_errors aan te zetten.
Een mooie if-else om je mail() functie kan ook geen kwaad, zodat je zeker weet of de functie zijn werk gedaan heeft, in plaats van zelf maar te bepalen dat de mail verzonden is.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

17/10/2017 23:47:57
Quote Anchor link
Het vervelende van email versturen vanuit PHP is dat er veel factoren zijn waarmee het mis kan gaan.

- vanaf de eigen computer gaat het niet zomaar werken. Je mailserver (afhankelijk van het besturingssysteem) moet geïnstalleerd zijn, gestart zijn en juist geconfigureerd zijn.

- vanaf de hosting provider is het raadzaam om eens goed de FAQ's door te lezen. Sommige ondersteunen de php mail() functie helemaal niet en bieden slechts een SMTP server aan en sommige hebben een rijtje voorwaarden waaraan je moet voldoen. één van de veel voorkomende voorwaarden is dat de FROM: een bestaande mailbox moet zijn bij de hosting provider. Mocht de hosting provider inderdaad alleen SMTP ondersteunen dan zul je PHPMailer nodig hebben om je mail te versturen. Daar kunnen we je eventueel wel bij helpen maar je moet dan wel weer goed de settings HOST, PORT, ENCRYPTIE, LOGINNAAM, PASSWORD weten.

Tip:

Neem onderstaande test script even over en probeer hiermee een eerste mail te sturen.
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
<?php

/*
 * TEST JE EMAIL
 */

ini_set( 'display_errors', 1 );
error_reporting( E_ALL );

/*
 * INDIEN MOGELIJK VUL HIER ONDER BIJVOORKEUR EEN BESTAAND EMAILADRES IN DAT EINDIGT OP JE EIGEN DOMEINNAAM
 *
 * Voorbeeld:
 *
 * Je domeinnaam is phphulp.nl
 * Je hebt een mailadres aangemaakt: [email protected]
 * $from = '[email protected]';
 */

$from = '[email protected]';

/*
 * WAAR WIL JE JE TESTMAIL HEEN STUREN?
 */

$to = '[email protected]';


$subject = 'PHP Mail Test script';
$message = 'Dit mailtje is een testbericht.';

$headers  = 'From: ' . $from . "\r\n";
$headers .= 'X-Mailer: PHP/' . phpversion() . "\r\n";
$headers .= 'X-Priority: Normal' . "\r\n";

if(mail($to,$subject,$message, $headers)) {
    echo 'Testmail is verzonden naar ' . $to;
}
else {
    echo 'Het verzenden van de mail is MISLUKT!';
}


?>


Toevoeging op 17/10/2017 23:53:27:

Onthoudt tevens dat als het script zegt dat de mail succesvol verstuurt is dit nog geen enkele garantie is dat een mail ook bij de ontvanger aankomt.
Gewijzigd op 17/10/2017 23:51:42 door Frank Nietbelangrijk
 
Vraag PHP

Vraag PHP

18/10/2017 09:59:44
Quote Anchor link
Frank Nietbelangrijk op 17/10/2017 23:47:57:
Het vervelende van email versturen vanuit PHP is dat er veel factoren zijn waarmee het mis kan gaan.

- vanaf de eigen computer gaat het niet zomaar werken. Je mailserver (afhankelijk van het besturingssysteem) moet geïnstalleerd zijn, gestart zijn en juist geconfigureerd zijn.

- vanaf de hosting provider is het raadzaam om eens goed de FAQ's door te lezen. Sommige ondersteunen de php mail() functie helemaal niet en bieden slechts een SMTP server aan en sommige hebben een rijtje voorwaarden waaraan je moet voldoen. één van de veel voorkomende voorwaarden is dat de FROM: een bestaande mailbox moet zijn bij de hosting provider. Mocht de hosting provider inderdaad alleen SMTP ondersteunen dan zul je PHPMailer nodig hebben om je mail te versturen. Daar kunnen we je eventueel wel bij helpen maar je moet dan wel weer goed de settings HOST, PORT, ENCRYPTIE, LOGINNAAM, PASSWORD weten.

Tip:

Neem onderstaande test script even over en probeer hiermee een eerste mail te sturen.
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
<?php

/*
 * TEST JE EMAIL
 */

ini_set( 'display_errors', 1 );
error_reporting( E_ALL );

/*
 * INDIEN MOGELIJK VUL HIER ONDER BIJVOORKEUR EEN BESTAAND EMAILADRES IN DAT EINDIGT OP JE EIGEN DOMEINNAAM
 *
 * Voorbeeld:
 *
 * Je domeinnaam is phphulp.nl
 * Je hebt een mailadres aangemaakt: [email protected]
 * $from = '[email protected]';
 */

$from = '[email protected]';

/*
 * WAAR WIL JE JE TESTMAIL HEEN STUREN?
 */

$to = '[email protected]';


$subject = 'PHP Mail Test script';
$message = 'Dit mailtje is een testbericht.';

$headers  = 'From: ' . $from . "\r\n";
$headers .= 'X-Mailer: PHP/' . phpversion() . "\r\n";
$headers .= 'X-Priority: Normal' . "\r\n";

if(mail($to,$subject,$message, $headers)) {
    echo 'Testmail is verzonden naar ' . $to;
}
else {
    echo 'Het verzenden van de mail is MISLUKT!';
}


?>


Toevoeging op 17/10/2017 23:53:27:

Onthoudt tevens dat als het script zegt dat de mail succesvol verstuurt is dit nog geen enkele garantie is dat een mail ook bij de ontvanger aankomt.


Hallo Frank, bedankt voor je reactie. Ik heb echt totaal geen verstand van PHP. Ik heb jouw code toegevoegd, en dit zou het dan moeten worden??

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
<?php

/*
 * TEST JE EMAIL
 */

ini_set( 'display_errors', 1 );
error_reporting( E_ALL );

/*
 * INDIEN MOGELIJK VUL HIER ONDER BIJVOORKEUR EEN BESTAAND EMAILADRES IN DAT EINDIGT OP JE EIGEN DOMEINNAAM
 *
 * Voorbeeld:
 *
 * Je domeinnaam is phphulp.nl
 * Je hebt een mailadres aangemaakt: [email protected]
 * $from = '[email protected]';
 */

$from = '[email protected]';

/*
 * WAAR WIL JE JE TESTMAIL HEEN STUREN?
 */

$to = '[email protected]';


$subject = 'PHP Mail Test script';
$message = 'Dit mailtje is een testbericht.';

$headers= 'From: ' . $from . "\r\n";
$headers .= 'X-Mailer: PHP/' . phpversion() . "\r\n";
$headers .= 'X-Priority: Normal' . "\r\n";

if(mail($to,$subject,$message, $headers)) {
echo 'Testmail is verzonden naar ' . $to;
}
else {
echo 'Het verzenden van de mail is MISLUKT!';
}


?>


<!DOCTYPE html>
<head>
<title>Form submission</title>
</head>
<body>

<form action="" method="post">
First Name: <input type="text" name="first_name"><br>
Last Name: <input type="text" name="last_name"><br>
Email: <input type="text" name="email"><br>
Message:<br><textarea rows="5" name="message" cols="30"></textarea><br>
<input type="submit" name="submit" value="Submit">
</form>

</body>
</html>
.

Dit werkt helaas ook niet. Je zegt ook dat er een grote kans is dat mailtjes niet aankomen. Ik denk dat het dan handiger is om een comment system te maken waarop mensen een reactie achter kunnen laten, die dan op de admin pagina wordt geplaats.
 
- Ariën  -
Beheerder

- Ariën -

18/10/2017 10:19:03
Quote Anchor link
Gebruik je dit script lokaal op je eigen computer, of bij een hostingprovider? En staan ze gewoon niet in de spam-box?
Gewijzigd op 18/10/2017 10:19:57 door - Ariën -
 
Vraag PHP

Vraag PHP

18/10/2017 11:01:59
Quote Anchor link
- Ariën - op 18/10/2017 10:19:03:
Gebruik je dit script lokaal op je eigen computer, of bij een hostingprovider? En staan ze gewoon niet in de spam-box?


Hallo Ariën, ik gebruik het script op mijn eigen computer. Ik gebruik geen hostingprovider. Ze staan ook niet in de spam-box.
 
Bart V B

Bart V B

18/10/2017 11:20:48
Quote Anchor link
Dan gaat dat ook niet werken. JE moet dan de SMTP instelling aanpassen.
Welk php dingetje gebruik je? WAMP, XAMMP, Laragon?
Verder moet je wel je formulier aan je mail script knopen anders heeft dat formulier niet zoveel zin.
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
<?php

ini_set( 'display_errors', 1 );
error_reporting( E_ALL );

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


  $from = $_POST['email'];
  $to = 'JOU_EIGEN_EMAIL';
  $subject = $_POST['first_name'].' '.$_POST['last_name'].'heeft je een mail gestuurd.';
  $message = $_POST['message'];

  $headers= 'From: ' . $from . "\r\n";
  $headers .= 'X-Mailer: PHP/' . phpversion() . "\r\n";
  $headers .= 'X-Priority: Normal' . "\r\n";

  if(mail($to,$subject,$message, $headers))
  {

    echo 'Testmail is verzonden naar ' . $to;
  }

  else
     {
        echo 'Het verzenden van de mail is MISLUKT!';
     }
}

else
{
?>

<!DOCTYPE html>
<head>
<title>Form submission</title>
</head>
<body>

<form action="" method="post">
First Name: <input type="text" name="first_name"><br>
Last Name: <input type="text" name="last_name"><br>
Email: <input type="text" name="email"><br>
Message:<br><textarea rows="5" name="message" cols="30"></textarea><br>
<input type="submit" name="submit" value="Submit">
</form>

</body>
</html>
<?php
}
?>

EDIT Typo weggehaald
Gewijzigd op 18/10/2017 11:52:39 door Bart V B
 
Vraag PHP

Vraag PHP

18/10/2017 14:26:20
Quote Anchor link
Oke. Bedankt @Bart voor je reactie. Ik heb geen idee of ik WAMP, XAMMP of Laragon gebruik. Als ik jullie zo hoor is er geen garantie dat het gaat lukken. Ik denk dat het beter is om met comments te gaan werken.
 
- Ariën  -
Beheerder

- Ariën -

18/10/2017 15:32:35
Quote Anchor link
Of gewoon uitzoeken waarom de mail-functie niet werkt. Het mailen is ook de bedoeling van de schoolopdracht, lijkt me ;-)

Wat meldt de output van phpinfo() over de mail-settings?
Gewijzigd op 18/10/2017 15:34:03 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

18/10/2017 16:00:20
Quote Anchor link
@Vraag PHP maar heb je uberhaupt een programma op jouw PC geïnstalleerd dat PHP verwerkt? Dit werkt niet standaard in een webbrowser, die snappen geen biet van PHP. PHP is een "server side scriptingtaal". Dit houdt in dat als een gebruiker een webpagina met PHP oproept bij een webserver, deze webserver eerst alle PHP-code uitvoert, en -waar van toepassing- omzet naar HTML. Vervolgens wordt -meestal- een HTML-pagina geserveerd. De pagina/respons die de eindgebruiker uiteindelijk ontvangt bevat geen letter PHP maar is enkel HTTP / HTML.

Het volgende klopt niet:
Vraag PHP op 17/10/2017 18:12:48:
Automatisch e-mails versturen kan alleen via php had ik gelezen.

Het is niet eens PHP zelf die de e-mail verstuurt. Het enige wat PHP doet is een mailopdracht geven aan een ander proces die deze verder af kan handelen. Wanneer je bijvoorbeeld WAMP (dit is zeg maar een webserverpakket voor de doe-het-zelver met PHP- en MySQL-ondersteuning) installeert, zul je deze nog steeds moeten configureren om te kunnen mailen.

Als je dit op je eigen PC doet die via je kabelboer (Ziggo, KPN, noem het maar op) in verbinding staat met het internet zou dit zo eenvoudig kunnen zijn als het configureren van de SMTP-instellingen (de mail-instellingen) van je Internet Service Provider (ISP).

Een alternatief is dat je bijvoorbeeld een verbinding maakt met jouw e-mail service, bijvoorbeeld gmail. Maar het versturen van e-mail werkt eigenlijk nooit "out of the box", hier zul je het een en ander voor moeten instellen...

Weer een ander alternatief zou het aanschaffen van een webhostingpakket (al dan niet met eigen domeinnaam) zijn, hier zit mail-functionaliteit vrijwel altijd bij inbegrepen.

Daarnaast, elk "server side proces" wat jouw formulier kan opvangen en verder kan verwerken zou dit potentieel kunnen doorgeven aan een mailapplicatie. Je bent dus niet per sé gelimiteerd tot PHP (en zoals gezegd, PHP regelt het versturen van de mail niet zelf).
Gewijzigd op 18/10/2017 16:05:30 door Thomas van den Heuvel
 
Frank Nietbelangrijk

Frank Nietbelangrijk

18/10/2017 20:46:17
Quote Anchor link
Maarten je zou de gok kunnen nemen je script gewoon zo in te leveren. Je leraar gaat als ik het allemaal zo lees toch niet bij jou thuis testen of het werkt. En de code klopt bijna helemaal dus daar zul je geen slecht rapportcijfer voor krijgen. Het enigste wat ik zou willen adviseren is de code nog iets uit te breiden met een redirect nadat de mail verstuurd is naar een bedank pagina en anders een foutmelding die netjes in je HTML komt te staan. Die bedank pagina is vervolgens gewoon een extra pagina zoals alle andere.
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
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);

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

    $error = null;
    $from = $_POST['email'];
    $to = 'JOU_EIGEN_EMAIL';
    $subject = $_POST['first_name'] . ' ' . $_POST['last_name'] . 'heeft je een mail gestuurd.';
    $message = $_POST['message'];

    $headers = 'From: ' . $from . "\r\n";
    $headers .= 'X-Mailer: PHP/' . phpversion() . "\r\n";
    $headers .= 'X-Priority: Normal' . "\r\n";

    if (mail($to, $subject, $message, $headers))
    {

    // redirect de gebruiker naar bedankt.html
        header('Location: bedankt.html');
        exit;
    }
else
    {
        $error = 'De mail kon helaas niet verzonden worden.';
    }
}

?>

<!DOCTYPE html>
<head>
    <title>Form submission</title>
</head>
<body>
    <form action="" method="post">
        <?php if($error) echo '<strong>' . $error . '</strong>'; ?>
        First Name: <input type="text" name="first_name"><br>
        Last Name: <input type="text" name="last_name"><br>
        Email: <input type="text" name="email"><br>
        Message:<br><textarea rows="5" name="message" cols="30"></textarea><br>
        <input type="submit" name="submit" value="Submit">
    </form>

</body>
</html>


Zorg dat die bedankt.html er wel bij zit en dan krijg jij heus een voldoende. Cheers

Toevoeging op 18/10/2017 20:59:16:

Tip: Zet nog even de meta charset in je <head> sectie:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<meta charset="UTF-8">
Gewijzigd op 18/10/2017 21:00:50 door Frank Nietbelangrijk
 
Ivo P

Ivo P

18/10/2017 23:00:18
Quote Anchor link
misschien ook nog een idee om even te contrleren of $_POST['email'] ook inderdaad een (één) mailadres bevat, en ook niet meer dan dat.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $from = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL); ?>


En dan controleren of $from wel gevuld is.

Als je dat niet doet zou iemand ook als mail adres kunnen opgeven:

'[email protected]
BCC: [email protected], [email protected], [email protected]
Subject: here is some spam!

Buy my stuff

';

Dus daarmee neemt iemand zo je mail formulier over
 
- Ariën  -
Beheerder

- Ariën -

18/10/2017 23:25:00
Quote Anchor link
Frank Nietbelangrijk op 18/10/2017 20:46:17:
Maarten je zou de gok kunnen nemen je script gewoon zo in te leveren. Je leraar gaat als ik het allemaal zo lees toch niet bij jou thuis testen of het werkt.

Toen ik op school zat (MBO ICT Niveau 3) kwam de leraar ook kijken, en moesten we ons geprogrammeerde spul demonstreren, alsof de leraar de klant was.

Ik weet niet hoe de controle bij jullie op school is. Maar als het enkel inleveren is, dan zou ik dat ook gewoon doen, met het extra advies wat Frank je gegeven heeft. ZO niet, dan zou ik eens kijken hoe je SMTP werken kan krijgen op je server.
Het hoeft niet heel complex te zijn als je een bestaande SMTP-server van je provider gebruikt.
 
Vraag PHP

Vraag PHP

19/10/2017 09:51:19
Quote Anchor link
Hallo iedereen, bedankt voor alle antwoorden! Bij de vorige opdrachten kon je de code gewoon zo inleveren, dus dat ga ik nu ook doen. Nogmaals bedankt voor de tijd die iedereen erin heeft gestoken!
Groeten Maarten
 



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.