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.

<!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>

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.
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?
@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).
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.

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

[size=xsmall]Toevoeging op 18/10/2017 20:59:16:[/size]

Tip: Zet nog even de meta charset in je <head> sectie:

<meta charset="UTF-8">
misschien ook nog een idee om even te contrleren of $_POST['email'] ook inderdaad een (één) mailadres bevat, en ook niet meer dan dat.

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

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

Reageren