Beginnen met formulieren en op zoek naar het stukje emailadres
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?
Gewijzigd op 03/12/2017 19:15:32 door - Ariën -
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.
Gewijzigd op 03/12/2017 22:43:51 door Frank Nietbelangrijk
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.
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.
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?
Code (php)
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
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
<!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 Reniecommissie MHO organiseert regelmatig een renie
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;ReniesiteMHO;Reniecommissie 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>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>formulier_02</title>
<meta name="description" content="De Reniecommissie MHO organiseert regelmatig een renie
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;ReniesiteMHO;Reniecommissie 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>
Edit:
Ik heb code-tags geplaatst. Gelieve dit in het vervolg zelf toe te voegen aan je bericht.
Zie ook: Veel gestelde vragen: Welke UBB-codes kan ik gebruiken.
Zie ook: Veel gestelde vragen: Welke UBB-codes kan ik gebruiken.
Gewijzigd op 08/12/2017 23:25:36 door - Ariën -
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
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]";
}
// 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.
Gewijzigd op 08/12/2017 23:32:20 door - Ariën -
Je had daar ook je probleem kunnen voorleggen in het forum.
Probeer je formulier met de wysiwyg web builder 12 daar
eens een form te maken met de daar aanwezige template.
Ik vermoed dat je de onjuiste extensies gebruikt,
waardoor er geen mails verzonden worden.
Gewijzigd op 10/12/2017 23:09:19 door hans cappon
- Ariën - op 04/12/2017 16:06:14:
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.
- Ariën - op 08/12/2017 23:30:33:
Verder raden we nog steeds aan om de PHP-afhandeling boven je HTML te plaatsen, natuurlijk je HTML-document op orde te hebben.
Dit zou het streven moeten zijn, maar dit kan niet altijd. Daarnaast denk ik dat het veel belangrijker is dat op een hoger niveau de verschillende acties op een of andere manier logisch gescheiden zijn. Denk bij acties aan: het opbouwen van het formulier, al dan niet met voor- of eerder ingevulde waarden, het verwerken van het formulier, het tonen van een bedank-boodschap na afloop et cetera.
Hoe brak de rest van de PHP/HTML code dan ook verweven is, de reikwijdte van invloed is dan beperkt tot die actie zelf. En dit helpt dan weer bij het afzonderlijk ontwikkelen en debuggen van genoemde onderdelen.
Gewijzigd op 11/12/2017 00:24:44 door Thomas van den Heuvel
Maar in dit geval zou het zeker prima kunnen. Je benoemt namelijk de waarden in variabelen die je later gebruikt, en je echo'ed verder niks.
Door de hulp van Dhr Hans Cappon hebben we nu "samen" (hij meer dan ik maar ik zie het licht)
een formulier ontworpen via Wysiwyg Web Builder en die werkt prima.
Allen die de moeite hebben genomen mij te helpen Bedankt.
Mochten er nog nieuwe ontwikkelingen ontstaan zal ik ze hier melden.
Nogmaals dank voor alle geduld en hulp.
Johan van poelgeest