Via PHP hulp ben ik nu begonnen met PHP formulieren
en kan leuk het formulier op beeld krijgen maar dan?

Heb gebruikt het uitgewerkte voorbeeld van "Mijn eerste formulier"
en het tweede deel "verwerk2.php"

In dit formulier kan ik opgeven voornaam, achternaam, dag, maand, en jaar
( het formulier ging niet verder als 1950
maar ik heb al aan kunnen passen dat mijn geboortejaar 1946 ook kan.
het tweede deel controleert of alles is ingevuld en klaar voor verzending laat ook zien wat er is ingevuld.

Wat ik mis in het verhaal, hoe krijg ik de gegevens van het ingevulde formulier
verzonden naar het emailadres van mijn website.

Ik heb stap voor stap alles zitten doorlezen maar mis dat stuk?

Wie wil mij verder helpen.
Met vriendelijke groet Johan
Code-tags toegevoegd. Gelieve in het vervolg deze zelf te plaatsen.
Wil ik natuurlijk graag doen maar ik zie door de bomen het bos niet.
Heb alles uitgeprint met als doel zoek de verschillen. Wil u mij een voorbeeld geven?

[code] en [/code] gebruiken om je script in het topic. Dan is je script daar goed leesbaar.
Ariën heeft gelijk. Feitelijk bouw je je pagina's (of liever je applicatie) in twee delen.

Het eerste deel is je applicatie waarin je gaat bepalen wat er moet gaan gebeuren.

In jouw redelijk eenvoudige code kan dit al variëren in de volgende dingen:
1. een leeg formulier tonen
2. een formulier tonen met foutmeldingen (nadat deze verstuurd is maar de validatie mislukt is)
3. de gegevens van het formulier verwerken (de mail sturen dus) en de gebruiker doorsturen naar een andere pagina.

Wanneer een gebruiker doorgestuurd moet worden dan is het niet meer logisch om nog een HTML pagina op te bouwen en vervolgens de gebruiker door te sturen.

in het tweede deel bouw je je HTML op.

Misschien is het een idee om dit eens te lezen, vervolgd door dit en dan je code nog eens te herzien.
Ik was al blij met het eerdere beeld maar alles blijk nu toch moeilijker dan ik dacht.
Ga de tweede link eens proberen en mocht het me dan nog niet lukken, schrijven de reünisten zich maar ouderwets in via een handgeschreven formulier per post.
Het gaat er gewoon om dat je boven je HTML-code je PHP-script uitvoert, en je in de HTML je hoogstens beperkt tot het tonen van diverse waardes en foutmeldingen.
Doordat je een u met umlaut gebruikt in je onderwerp treed er een foutmelding op. Mogelijk ontvang je daardoor het bericht niet.
De volgende foutmelding treed op "said: 550 Subject contains invalid characters. (in reply to end of DATA command)"

Ofterwijl, Onderwerpt bevat speciale tekens die niet 'juist' zijn.
Als je perse de ü wilt gebruiken i.p.v. u zul je wat utf_encode/decode moeten toevoegen waarschijnlijk.
We hebben het over de ü an reünie, die gaan we vervangen.
Het lukt me nu al de mooiste formulieren te maken maar er wordt geen mail verzonden.
We gaan het proberen.
Kan je anders je relevante code laten zien?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>formulier_02</title>
<meta name="description" content="De Reüniecommissie MHO organiseert regelmatig een reünie
bestemd voor alle oud medewerkers van het Marine Hospitaal Overveen, zowel burgers als militairen, waaronder alle ziekenverplegers, die hun opleiding hebben gevolgd op Tetrode.">
<meta name="keywords" content="Marinehospitaal;Marine Hospitaal Overveen;MHO;ReüniesiteMHO;Reüniecommissie MHO;Tetrode:Tettrode">
<meta name="author" content="Johan van Poelgeest">
<meta name="generator" content="WYSIWYG Web Builder 12 - http://www.wysiwygwebbuilder.com">
<link href="Marinehosp.css" rel="stylesheet" type="text/css">
<link href="formulier_02.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="container">
</div>
<?php

// functie die de formuliervelden valideert en foutmeldingen aanmaakt
function validate($naam, $email)
{
    $errors = array();
    
    // validatieregels voor de naam
    if(strlen($naam) < 2)
        $errors['naam'] = 'U heeft geen naam ingevuld.';
    
    // validatieregels voor het mailadres
    if(!strlen($email))
        $errors['email'] = 'U heeft geen email adres ingevuld.';
    else if(!filter_var($email, FILTER_VALIDATE_EMAIL))
        $errors['email'] = 'U heeft een ongeldig email adres ingevuld.';
    
    // geef de array met foutmeldingen terug
    return $errors;
}

// initialisatie
$errors = array();

// indien het formulier verstuurd is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
    // valideer de ingevulde gegevens
    $errors = validate($_POST['naam'], $_POST['email']);
    
    // als er geen fouten voortkomen uit de validatie
    if(!count($errors))
    {
        /* 
         * Verwerk hier je formulier, bijvoorbeeld een email versturen of
         * de gegevens opslaan in de database
         */
        
         $onderwerp = "Inschrijving MHO reunie 2018";
         $inhoud = "inschrijving";
         $ontvanger = "[email protected]";
         $afzender = "[email protected]";
         $headers = array();
         $headers[ ] = "MIME-Version: 1.0";
         $headers[ ] = "Content-type: text/plain; charset=utf-8";
         $headers[ ] = "From: Afzendernaam <{$afzender}>";
         $headers[ ] = "Reply-To: Afzendernaam <{$afzender}>";
         $headers[ ] = "X-Mailer: PHP/".phpversion();
         mail($ontvanger, $onderwerp, $inhoud, implode("\r\n", $headers), "-f".$afzender);







        // redirect de gebruiker 
        header('Location: feedback.html');
        exit;
    }
}
?>
<!doctype html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>inschrijving</title>
    </head>
    <body>
        <?php
            if(count($errors)) {
                echo '<ul id="errors">';
                foreach($errors as $error) {
                    echo '<li>' . $error . '</li>';
                }
                echo '</ul>';
            }
        ?>
        <form method="post">

	<p>
            <label for="voornaam">Voornaam  :</label>
            <input type="text" name="naam" value="">
        </p>

        <p>
            <label for="email">Emailadres:</label>
            <input type="email" name="email" value="">
        </p>
        
        <br>
            <button type="submit">Verzenden</button>
        </form>
    </body>
</html></body>
</html>

Lijn 65 t/m 75 (waarom zo veel witruimte?) aanpassen naar:


if(mail($ontvanger, $onderwerp, $inhoud, implode("\r\n", $headers), "-f".$afzender)) {
        // redirect de gebruiker
        header('Location: feedback.html');
        exit;
} else {
	$errors['mailproblem'] = "Er is aan onze kant wat fout gegaan bij het versturen van het bericht. Gelieve ons handmatig een e-mail te sturen naar [email protected]";
}


Zie je dan die genoemde foutmelding, of wordt je netjes doorgestuurd?
Verder raden we nog steeds aan om de PHP-afhandeling boven je HTML te plaatsen, natuurlijk je HTML-document op orde te hebben.

Reageren