waarom ziet php een spatie als input
In mijn reserveringsscript loop ik tegen een probleempje aan.
Ik wil de klant de mogelijkheid bieden om de ingevoerde gegevens uit het formulier nog eens door te lezen / aan te passen voordat het formulier werkelijk verstuurd wordt.
Ik haal de gegevens uit het resultaat van de gefilterde invoer, maak er even een nieuwe array van om de namen van de invoervelden leesbaar te maken en om de datum uit de datepicker samen te voegen.
Met een foreach lus tover ik de ingevulde gegevens op scherm, maar zorg met
[code
dat de niet ingevulde velden niet op het scherm komen.
Nu had ik tussen de datum en de tijd eerst - - en : staan om de gegevens van datum en tijd te schijden.
Dit zag het script als value en liet toch de key zien.
Nu heb ik deze weg gehaald en om de datum en tijd leesbaar te houden heb ik er een spatie tussen gezet, dit ziet het script ook als value!?!?
Escapen met \ lukt niet!
Wie weet de oplossing(zie code)
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
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
<?php
$content[] = "<p><b><font face=\"Verdana\" size=\"2\" color=\"#000000\">U staat op het punt de volgende gegevens naar ons te verzenden</font><br></b></p>";
$invoer= array(
'Naam' => $aResultaat['naam'],
'Adres' => $aResultaat['adres'],
'Woonplaats' => $aResultaat['woonplaats'],
'Bedrijf' => $aResultaat['bedrijf'],
'Telefoonnummer' => $aResultaat['telefoonnummer'],
'Emailadres' => $aResultaat['emailadres'],
'Aantal personen' => $aResultaat['aantalpersonen'],
'Vertrekdatum' => $aResultaat['dag1'] .' '. $aResultaat['maand1'] .' '. $aResultaat['jaar1'],
'Vertrektijd' => $aResultaat['uur1'] .' '. $aResultaat['min1'],
'Retour' => $aResultaat['retour'],
'Alleen ophalen van Schiphol' => $aResultaat['ophalen'],
'Straat van bestemming' => $aResultaat['straat_bestemming'],
'Plaats van bestemming' => $aResultaat['plaats_bestemming'],
'Bedrijf op bestemming' => $aResultaat['bedrijf_bestemming'],
'Aankomstdatum' => $aResultaat['dag2'] .' '. $aResultaat['maand2'] .' '. $aResultaat['jaar2'],
'Aankomsttijd' => $aResultaat['uur2'] .' '. $aResultaat['min2'],
'Mobiele telefoonnummer' => $aResultaat['mobiel'],
'Vluchtnummer' => $aResultaat['vluchtnummer'],
'Opmerkingen' => $aResultaat['opmerkingen'],
'Contante betaling' => $aResultaat['contant'],
'Betaling met creditcard (u gaat akoord met de verhoging van € 3.00)' => $aResultaat['creditcard'],
'Ik wil een telefonische bevestiging' => $aResultaat['telefonisch_bevestigen'],
'Ik wil een bevestiging per email' => $aResultaat['via_email_bevestigen'],
);
foreach($invoer as $key => $sValue)
{
if(!empty($sValue))
{
$content[] = '<ul>';
$content[] = '<li>'.$key.': <b>'.$sValue.'</b></li>';
$content[] = '</ul>';
}
}
}
}
?>
$content[] = "<p><b><font face=\"Verdana\" size=\"2\" color=\"#000000\">U staat op het punt de volgende gegevens naar ons te verzenden</font><br></b></p>";
$invoer= array(
'Naam' => $aResultaat['naam'],
'Adres' => $aResultaat['adres'],
'Woonplaats' => $aResultaat['woonplaats'],
'Bedrijf' => $aResultaat['bedrijf'],
'Telefoonnummer' => $aResultaat['telefoonnummer'],
'Emailadres' => $aResultaat['emailadres'],
'Aantal personen' => $aResultaat['aantalpersonen'],
'Vertrekdatum' => $aResultaat['dag1'] .' '. $aResultaat['maand1'] .' '. $aResultaat['jaar1'],
'Vertrektijd' => $aResultaat['uur1'] .' '. $aResultaat['min1'],
'Retour' => $aResultaat['retour'],
'Alleen ophalen van Schiphol' => $aResultaat['ophalen'],
'Straat van bestemming' => $aResultaat['straat_bestemming'],
'Plaats van bestemming' => $aResultaat['plaats_bestemming'],
'Bedrijf op bestemming' => $aResultaat['bedrijf_bestemming'],
'Aankomstdatum' => $aResultaat['dag2'] .' '. $aResultaat['maand2'] .' '. $aResultaat['jaar2'],
'Aankomsttijd' => $aResultaat['uur2'] .' '. $aResultaat['min2'],
'Mobiele telefoonnummer' => $aResultaat['mobiel'],
'Vluchtnummer' => $aResultaat['vluchtnummer'],
'Opmerkingen' => $aResultaat['opmerkingen'],
'Contante betaling' => $aResultaat['contant'],
'Betaling met creditcard (u gaat akoord met de verhoging van € 3.00)' => $aResultaat['creditcard'],
'Ik wil een telefonische bevestiging' => $aResultaat['telefonisch_bevestigen'],
'Ik wil een bevestiging per email' => $aResultaat['via_email_bevestigen'],
);
foreach($invoer as $key => $sValue)
{
if(!empty($sValue))
{
$content[] = '<ul>';
$content[] = '<li>'.$key.': <b>'.$sValue.'</b></li>';
$content[] = '</ul>';
}
}
}
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Peter Arendse
Maar hoezo controleer je niet eerst of de betreffende variabelen waarmee je de datum opmaakt wel bestaan?
Dit is een voortborduring op het scriptje waar we een tijdeje geleden mee begonnen zijn.
Het is mij inderdaad gelukt met trim() om de spaties te escapen, maar mooier had ik - - of : gevonden.
Ik laat je het scriptje tot nu toe even zien, misschien zie jij nog verbeteringen.
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
<?php
session_start();
ini_set('display_errors', 1);
error_reporting(E_ALL);
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Declareren van errors en input arrays
$_SESSION['errors'] = array();
$_SESSION['input'] = $_POST;
// Verplichte velden
$aVerplicht = array('naam', 'telefoonnummer', 'emailadres');
// Definieren van filters voor verschillende inputvelden.
$aFilters = array (
'naam' => NULL,
'adres' => NULL,
'woonplaats' => NULL,
'bedrijf' => NULL,
'telefoonnummer' => NULL,
'emailadres' => FILTER_VALIDATE_EMAIL,
'aantalpersonen' => NULL,
'dag1' => NULL,
'maand1' => NULL,
'jaar1' => NULL,
'uur1' => NULL,
'min1' => NULL,
'retour' => NULL,
'ophalen' => NULL,
'straat_bestemming' => NULL,
'plaats_bestemming' => NULL,
'bedrijf_bestemming' => NULL,
'dag2' => NULL,
'maand2' => NULL,
'jaar2' => NULL,
'uur2' => NULL,
'min2' => NULL,
'mobiel' => NULL,
'vluchtnummer' => NULL,
'opmerkingen' => NULL,
'contant' => NULL,
'creditcard' => NULL,
'telefonisch_bevestigen' => NULL,
'via_email_bevestigen' => NULL
);
// Uitvoeren van de filters en doorlopen van het resultaat
$aResultaat = filter_input_array(INPUT_POST, $aFilters);
$_SESSION['sResultaat'] = $aResultaat;
foreach($aResultaat as $sKey => $sValue)
{
$sValue = trim($sValue);
if(empty($sValue) && in_array($sKey, $aVerplicht))
{
$_SESSION['errors'][$sKey] = true;
$aErrors[] = 'U bent vergeten uw '.$sKey.' in te vullen.';
}
}
?>
<?PHP
// Verwerk het formulier als er geen fouten opgetreden zijn.
if(isset($aErrors))
{
echo '<ul>';
foreach($aErrors as $sError)
{
echo '<li>'.$sError.'</li>';
}
echo '</ul>';
echo "<br><font face=\"Verdana\" size=\"2\" color=\"#000000\">U heeft het formulier onjuist ingevuld, klik op <a href=javascript:history.back(1)>Aanpassen</a> om terug te keren naar het formulier.</font><br>";
exit;
}
if(empty($_SESSION['errors']))
{
echo "<font face=\"Verdana\" size=\"2\" color=\"#000000\">U staat op het punt de volgende gegevens naar ons te verzenden</font><br>";
echo "<font face=\"Verdana\" size=\"2\" color=\"#000000\">Leest u a.u.b. de ingevoerde gegevens nog even aandachtig door.</font><br>";
// vb. Stuur een email met de gegevens
// Stuur gebruiker door naar een volgende pagina.
$content[] = "<p><b><font face=\"Verdana\" size=\"2\" color=\"#000000\">U staat op het punt de volgende gegevens naar ons te verzenden</font><br></b></p>";
$invoer= array(
'Naam' => $aResultaat['naam'],
'Adres' => $aResultaat['adres'],
'Woonplaats' => $aResultaat['woonplaats'],
'Bedrijf' => $aResultaat['bedrijf'],
'Telefoonnummer' => $aResultaat['telefoonnummer'],
'Emailadres' => $aResultaat['emailadres'],
'Aantal personen' => $aResultaat['aantalpersonen'],
'Vertrekdatum' => $aResultaat['dag1'] .' '. $aResultaat['maand1'] .' '. $aResultaat['jaar1'],
'Vertrektijd' => $aResultaat['uur1'] .' '. $aResultaat['min1'],
'Retour' => $aResultaat['retour'],
'Alleen ophalen van Schiphol' => $aResultaat['ophalen'],
'Straat van bestemming' => $aResultaat['straat_bestemming'],
'Plaats van bestemming' => $aResultaat['plaats_bestemming'],
'Bedrijf op bestemming' => $aResultaat['bedrijf_bestemming'],
'Aankomstdatum' => $aResultaat['dag2'] .' '. $aResultaat['maand2'] .' '. $aResultaat['jaar2'],
'Aankomsttijd' => $aResultaat['uur2'] .' '. $aResultaat['min2'],
'Mobiele telefoonnummer' => $aResultaat['mobiel'],
'Vluchtnummer' => $aResultaat['vluchtnummer'],
'Opmerkingen' => $aResultaat['opmerkingen'],
'Contante betaling' => $aResultaat['contant'],
'Betaling met creditcard (u gaat akoord met de verhoging van € 3.00)' => $aResultaat['creditcard'],
'Ik wil een telefonische bevestiging' => $aResultaat['telefonisch_bevestigen'],
'Ik wil een bevestiging per email' => $aResultaat['via_email_bevestigen'],
);
foreach($invoer as $key => $sValue)
{
if(trim($sValue) != '')
{
$content[] = '<ul>';
$content[] = '<li>'.$key.': <b><font color =\"ff66ff\">'.$sValue.'</font></b></li>';
$content[] = '</ul>';
}
}
}
}
if(isset($errors))
{
echo '<ul>';
foreach($errors as $error)
{
echo '<li>'.$error.'</li>';
}
echo '</ul>';
}
elseif(isset($content))
{
foreach($content as $line)
{
echo $line;
}
}
echo "<br><font face=\"Verdana\" size=\"2\" color=\"#000000\">Klik op <a href=javascript:history.back(1)>Aanpassen</a> om terug te keren naar het formulier.</font><br>";
echo "<font face=\"Verdana\" size=\"2\" color=\"#000000\">Klik op <a href=mail2.php?sResultaat>Reserveren</a> om de door u gecontroleerde gegevens werkelijk te versturen.</font> ";
?>
session_start();
ini_set('display_errors', 1);
error_reporting(E_ALL);
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Declareren van errors en input arrays
$_SESSION['errors'] = array();
$_SESSION['input'] = $_POST;
// Verplichte velden
$aVerplicht = array('naam', 'telefoonnummer', 'emailadres');
// Definieren van filters voor verschillende inputvelden.
$aFilters = array (
'naam' => NULL,
'adres' => NULL,
'woonplaats' => NULL,
'bedrijf' => NULL,
'telefoonnummer' => NULL,
'emailadres' => FILTER_VALIDATE_EMAIL,
'aantalpersonen' => NULL,
'dag1' => NULL,
'maand1' => NULL,
'jaar1' => NULL,
'uur1' => NULL,
'min1' => NULL,
'retour' => NULL,
'ophalen' => NULL,
'straat_bestemming' => NULL,
'plaats_bestemming' => NULL,
'bedrijf_bestemming' => NULL,
'dag2' => NULL,
'maand2' => NULL,
'jaar2' => NULL,
'uur2' => NULL,
'min2' => NULL,
'mobiel' => NULL,
'vluchtnummer' => NULL,
'opmerkingen' => NULL,
'contant' => NULL,
'creditcard' => NULL,
'telefonisch_bevestigen' => NULL,
'via_email_bevestigen' => NULL
);
// Uitvoeren van de filters en doorlopen van het resultaat
$aResultaat = filter_input_array(INPUT_POST, $aFilters);
$_SESSION['sResultaat'] = $aResultaat;
foreach($aResultaat as $sKey => $sValue)
{
$sValue = trim($sValue);
if(empty($sValue) && in_array($sKey, $aVerplicht))
{
$_SESSION['errors'][$sKey] = true;
$aErrors[] = 'U bent vergeten uw '.$sKey.' in te vullen.';
}
}
?>
<?PHP
// Verwerk het formulier als er geen fouten opgetreden zijn.
if(isset($aErrors))
{
echo '<ul>';
foreach($aErrors as $sError)
{
echo '<li>'.$sError.'</li>';
}
echo '</ul>';
echo "<br><font face=\"Verdana\" size=\"2\" color=\"#000000\">U heeft het formulier onjuist ingevuld, klik op <a href=javascript:history.back(1)>Aanpassen</a> om terug te keren naar het formulier.</font><br>";
exit;
}
if(empty($_SESSION['errors']))
{
echo "<font face=\"Verdana\" size=\"2\" color=\"#000000\">U staat op het punt de volgende gegevens naar ons te verzenden</font><br>";
echo "<font face=\"Verdana\" size=\"2\" color=\"#000000\">Leest u a.u.b. de ingevoerde gegevens nog even aandachtig door.</font><br>";
// vb. Stuur een email met de gegevens
// Stuur gebruiker door naar een volgende pagina.
$content[] = "<p><b><font face=\"Verdana\" size=\"2\" color=\"#000000\">U staat op het punt de volgende gegevens naar ons te verzenden</font><br></b></p>";
$invoer= array(
'Naam' => $aResultaat['naam'],
'Adres' => $aResultaat['adres'],
'Woonplaats' => $aResultaat['woonplaats'],
'Bedrijf' => $aResultaat['bedrijf'],
'Telefoonnummer' => $aResultaat['telefoonnummer'],
'Emailadres' => $aResultaat['emailadres'],
'Aantal personen' => $aResultaat['aantalpersonen'],
'Vertrekdatum' => $aResultaat['dag1'] .' '. $aResultaat['maand1'] .' '. $aResultaat['jaar1'],
'Vertrektijd' => $aResultaat['uur1'] .' '. $aResultaat['min1'],
'Retour' => $aResultaat['retour'],
'Alleen ophalen van Schiphol' => $aResultaat['ophalen'],
'Straat van bestemming' => $aResultaat['straat_bestemming'],
'Plaats van bestemming' => $aResultaat['plaats_bestemming'],
'Bedrijf op bestemming' => $aResultaat['bedrijf_bestemming'],
'Aankomstdatum' => $aResultaat['dag2'] .' '. $aResultaat['maand2'] .' '. $aResultaat['jaar2'],
'Aankomsttijd' => $aResultaat['uur2'] .' '. $aResultaat['min2'],
'Mobiele telefoonnummer' => $aResultaat['mobiel'],
'Vluchtnummer' => $aResultaat['vluchtnummer'],
'Opmerkingen' => $aResultaat['opmerkingen'],
'Contante betaling' => $aResultaat['contant'],
'Betaling met creditcard (u gaat akoord met de verhoging van € 3.00)' => $aResultaat['creditcard'],
'Ik wil een telefonische bevestiging' => $aResultaat['telefonisch_bevestigen'],
'Ik wil een bevestiging per email' => $aResultaat['via_email_bevestigen'],
);
foreach($invoer as $key => $sValue)
{
if(trim($sValue) != '')
{
$content[] = '<ul>';
$content[] = '<li>'.$key.': <b><font color =\"ff66ff\">'.$sValue.'</font></b></li>';
$content[] = '</ul>';
}
}
}
}
if(isset($errors))
{
echo '<ul>';
foreach($errors as $error)
{
echo '<li>'.$error.'</li>';
}
echo '</ul>';
}
elseif(isset($content))
{
foreach($content as $line)
{
echo $line;
}
}
echo "<br><font face=\"Verdana\" size=\"2\" color=\"#000000\">Klik op <a href=javascript:history.back(1)>Aanpassen</a> om terug te keren naar het formulier.</font><br>";
echo "<font face=\"Verdana\" size=\"2\" color=\"#000000\">Klik op <a href=mail2.php?sResultaat>Reserveren</a> om de door u gecontroleerde gegevens werkelijk te versturen.</font> ";
?>
Mijn tip: bouw je script eens opnieuw op en zet alleen de dingen erin die je ook gebruikt...
Als ik nu de mail verstuur met alle resultaten uit : $_SESSION['sResultaat'] = $aResultaat; komt alle invoer netjes binnen.
Maar weer te veel info, want ik wil de niet ingevoerde velden ook niet in mijn mail terug zien.
Ik dacht deze oplossing gevonden te hebben, maar ik krijg een fout melding:
Warning: Invalid argument supplied for foreach() in /www/htdocs/taxikalf/mail2.php on line 15
Ik zit er nu al weer een tijdje naar te kijken maar ik zie de oplossing niet.
De mail wordt wel verstuurd met de juiste email afzender(komt uit $sResultaat = $_SESSION['sResultaat'];) en de juiste naam( komt ook uit $sResultaat = $_SESSION['sResultaat'];).
Maar de rest van de gevens hoort volgens mij uit: $sInvoer = $_SESSION['sInvoer']; te komen.
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
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
<?php
session_start();
if(isset($_GET['sResultaat']))
{
$sResultaat = $_SESSION['sResultaat'];
$sInvoer = $_SESSION['sInvoer'];
$recipient="[email protected]";
$subject="Test Schipholreservering Taxibedrijf Kalf";
$header="From: " . $sResultaat['emailadres'] . "\r\n";
$mail_body ="Deze reservering is op " . date("d-m-Y") . " om " . date("H:i") . " uur verzonden door " . $sResultaat['naam'] ."\n\n";
foreach($sInvoer as $sKey => $sValue)
{
if(trim($sValue) != '')
{
$mail_body.="<li>".$key.": <b><font color =\"ff66ff\">".$sValue."</font></b></li>\n\n";
}
}
mail($recipient,$subject,$mail_body,$header);
?>
session_start();
if(isset($_GET['sResultaat']))
{
$sResultaat = $_SESSION['sResultaat'];
$sInvoer = $_SESSION['sInvoer'];
$recipient="[email protected]";
$subject="Test Schipholreservering Taxibedrijf Kalf";
$header="From: " . $sResultaat['emailadres'] . "\r\n";
$mail_body ="Deze reservering is op " . date("d-m-Y") . " om " . date("H:i") . " uur verzonden door " . $sResultaat['naam'] ."\n\n";
foreach($sInvoer as $sKey => $sValue)
{
if(trim($sValue) != '')
{
$mail_body.="<li>".$key.": <b><font color =\"ff66ff\">".$sValue."</font></b></li>\n\n";
}
}
mail($recipient,$subject,$mail_body,$header);
?>