Code geparsed in e-mail
Ik heb voor m'n vader die ziek in bed ligt een klein systeempje gemaakt waar hij z'n eten en drinken kan bestellen. De bestellingen worden dan naar ons toe gemaild. Het is een grapje, maar het is leuk als het werkt :)
Het probleem is als volgt: de bestelling komt van een formulier met radiobuttons maar die kan ik niet geparsed in de e-mail krijgen; ik krijg de code.
Hier is de betreffende code:
http://www.codedump.be/code/922/
(namen en e-mailadressen zijn geknipt)
De vraag is; hoe krijg ik het resultaat van de while loop (dus de bestelling) in de e-mail?
Alvast bedankt!
Edit: Let maar niet op de $getinfo =, die stond er nog van een vorig testje :P
Gewijzigd op 21/08/2010 15:01:50 door Johan Groenewold
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
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
<?php
if(isset($_GET['actie']) == "verzenden")
{
$to = '*knip*' . ', ';
$to .= '*knip*';
$subject = 'Diner *knip*';
// message
message = "*knip* heeft zojuist een nieuwe bestelling ingevoerd!<br /> Het betreft het diner. Dit is de bestelling:<br /><br />" . $getinfo;
reset ($_POST);
while (list($element, $value) = each($_POST))
{
if ($element !="submit")
{
if ($element !="opmerkingen")
{
echo ("$element<br />");
}
elseif (!empty($value))
{
echo ("<br /><br /><br />$element:<br />$value<br />");
}
}
}
$getinfo =
// To send HTML mail, the Content-type header must be set
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: service@localhost' . "\r\n";
if(!mail($to, $subject, $message, $headers)) {
echo ("De bestelling kon niet geplaatst worden. Contacteer uw webmaster om hem over dit probleem te informeren");
} else {
mail($to, $subject, $message, $headers);
include ('succes.php');
}
} else {
include ('header.html');
?>
if(isset($_GET['actie']) == "verzenden")
{
$to = '*knip*' . ', ';
$to .= '*knip*';
$subject = 'Diner *knip*';
// message
message = "*knip* heeft zojuist een nieuwe bestelling ingevoerd!<br /> Het betreft het diner. Dit is de bestelling:<br /><br />" . $getinfo;
reset ($_POST);
while (list($element, $value) = each($_POST))
{
if ($element !="submit")
{
if ($element !="opmerkingen")
{
echo ("$element<br />");
}
elseif (!empty($value))
{
echo ("<br /><br /><br />$element:<br />$value<br />");
}
}
}
$getinfo =
// To send HTML mail, the Content-type header must be set
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: service@localhost' . "\r\n";
if(!mail($to, $subject, $message, $headers)) {
echo ("De bestelling kon niet geplaatst worden. Contacteer uw webmaster om hem over dit probleem te informeren");
} else {
mail($to, $subject, $message, $headers);
include ('succes.php');
}
} else {
include ('header.html');
?>
Er kloppen al zaken niet:
0. if(isset($_GET['actie']) == "verzenden"), dit slaat helemaal nergens op isset geeft true of false terug en kan dus nooit maar dan ook nooit gelijk zijn aan een string 'verzenden'
1. je controleerd niet of het form daadwerkelijk is gepost, je kan niet op $_POST['submit'] testen want deze is de ene keer er wel en de andere keer weer niet
2. je controleerd en valideerd je $_POST waarden niet
3. de functie empty() is zinloos
4. php variabelen buiten quotes
5. die while lus slaat ook als een tang op een varken, een foreach is in dit geval dan een veel makkelijkere oplossing
Gewijzigd op 21/08/2010 15:20:51 door Noppes Homeland
Noppes Homeland op 21/08/2010 15:14:32:
GVD, post relevante code hier en niet elders!!
Er kloppen al zaken niet:
0. if(isset($_GET['actie']) == "verzenden"), dit slaat helemaal nergens op isset geeft true of false terug en kan dus nooit maar dan ook nooit gelijk zijn aan een string 'verzenden'
1. je controleerd niet of het form daadwerkelijk is gepost, je kan niet op $_POST['submit'] testen want deze is de ene keer er wel en de andere keer weer niet
2. je controleerd en valideerd je $_POST waarden niet
3. de functie empty() is zinloos
4. php variabelen buiten quotes
5. die while lus slaat ook als een tang op een varken, een foreach is in dit geval dan een veel makkelijkere oplossing
Er kloppen al zaken niet:
0. if(isset($_GET['actie']) == "verzenden"), dit slaat helemaal nergens op isset geeft true of false terug en kan dus nooit maar dan ook nooit gelijk zijn aan een string 'verzenden'
1. je controleerd niet of het form daadwerkelijk is gepost, je kan niet op $_POST['submit'] testen want deze is de ene keer er wel en de andere keer weer niet
2. je controleerd en valideerd je $_POST waarden niet
3. de functie empty() is zinloos
4. php variabelen buiten quotes
5. die while lus slaat ook als een tang op een varken, een foreach is in dit geval dan een veel makkelijkere oplossing
Sorry, ik kon niet echt een code-vak vinden tussen de BBcodes boven het tekstvak..
Maargoed.
1. Heb ik nu gefixed
2. Ik heb werkelijk geen flauw idee hoe dat moet. Ik kwam wel http://joebivins.com/2009/03/28/php-form-validation-continued/ tegen met:
Is dat iets?
3. Hoezo is het zinloos? Het klopt toch dat hij "opmerkingen" niet mee hoeft te sturen als die er niet zijn..?
4. Bedoel je dat dat niet moet (zoals bij $message) of juist wél (zoals bij de echo van $element)?
5. Die kwam rechtreeks uit het boek PHP5 van Peter Kassenaar, maar daar zitten wel meer fouten in. Ook gewijzigd nu.
Toevoeging op 21/08/2010 15:39:38:
Johan Groenewold op 21/08/2010 15:38:38:
Sorry, ik kon niet echt een code-vak vinden tussen de BBcodes boven het tekstvak..
Maargoed.
1. Heb ik nu gefixed
2. Ik heb werkelijk geen flauw idee hoe dat moet. Ik kwam wel http://joebivins.com/2009/03/28/php-form-validation-continued/ tegen met:
Is dat iets?
3. Hoezo is het zinloos? Het klopt toch dat hij "opmerkingen" niet mee hoeft te sturen als die er niet zijn..?
4. Bedoel je dat dat niet moet (zoals bij $message) of juist wél (zoals bij de echo van $element)?
5. Die kwam rechtreeks uit het boek PHP5 van Peter Kassenaar, maar daar zitten wel meer fouten in. Ook gewijzigd nu.
Noppes Homeland op 21/08/2010 15:14:32:
GVD, post relevante code hier en niet elders!!
Er kloppen al zaken niet:
0. if(isset($_GET['actie']) == "verzenden"), dit slaat helemaal nergens op isset geeft true of false terug en kan dus nooit maar dan ook nooit gelijk zijn aan een string 'verzenden'
1. je controleerd niet of het form daadwerkelijk is gepost, je kan niet op $_POST['submit'] testen want deze is de ene keer er wel en de andere keer weer niet
2. je controleerd en valideerd je $_POST waarden niet
3. de functie empty() is zinloos
4. php variabelen buiten quotes
5. die while lus slaat ook als een tang op een varken, een foreach is in dit geval dan een veel makkelijkere oplossing
Er kloppen al zaken niet:
0. if(isset($_GET['actie']) == "verzenden"), dit slaat helemaal nergens op isset geeft true of false terug en kan dus nooit maar dan ook nooit gelijk zijn aan een string 'verzenden'
1. je controleerd niet of het form daadwerkelijk is gepost, je kan niet op $_POST['submit'] testen want deze is de ene keer er wel en de andere keer weer niet
2. je controleerd en valideerd je $_POST waarden niet
3. de functie empty() is zinloos
4. php variabelen buiten quotes
5. die while lus slaat ook als een tang op een varken, een foreach is in dit geval dan een veel makkelijkere oplossing
Sorry, ik kon niet echt een code-vak vinden tussen de BBcodes boven het tekstvak..
Maargoed.
1. Heb ik nu gefixed
2. Ik heb werkelijk geen flauw idee hoe dat moet. Ik kwam wel http://joebivins.com/2009/03/28/php-form-validation-continued/ tegen met:
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
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
/**
* Provides form validation checking for fields.
*/
class Form {
private $name = '';
private $fields = array();
private $has_errors = false;
function __construct($name) {
$this->name = $name;
}
function setField($field, $name) {
$this->fields[$name] = $field;
}
function getFields() {
return $this->fields;
}
/**
* Validates the entire form by calling
* the validate routine on each field.
*
* @param $request A HTTP $_GET, $_POST, $_REQUEST array.
*/
function validate($request) {
if (is_array($request)) {
foreach ($request as $name => $value) {
if (isset($this->fields[$name])) {
$field = $this->fields[$name];
$field->validate($request);
if ($field->hasError() === true) {
$this->has_errors = true;
}
}
}
}
}
function hasErrors() {
return $this->has_errors;
}
* Provides form validation checking for fields.
*/
class Form {
private $name = '';
private $fields = array();
private $has_errors = false;
function __construct($name) {
$this->name = $name;
}
function setField($field, $name) {
$this->fields[$name] = $field;
}
function getFields() {
return $this->fields;
}
/**
* Validates the entire form by calling
* the validate routine on each field.
*
* @param $request A HTTP $_GET, $_POST, $_REQUEST array.
*/
function validate($request) {
if (is_array($request)) {
foreach ($request as $name => $value) {
if (isset($this->fields[$name])) {
$field = $this->fields[$name];
$field->validate($request);
if ($field->hasError() === true) {
$this->has_errors = true;
}
}
}
}
}
function hasErrors() {
return $this->has_errors;
}
Is dat iets?
3. Hoezo is het zinloos? Het klopt toch dat hij "opmerkingen" niet mee hoeft te sturen als die er niet zijn..?
4. Bedoel je dat dat niet moet (zoals bij $message) of juist wél (zoals bij de echo van $element)?
5. Die kwam rechtreeks uit het boek PHP5 van Peter Kassenaar, maar daar zitten wel meer fouten in. Ook gewijzigd nu.