Hallo,

In mijn (kleine) webshop verstuur ik een email naar mijzelf en de besteller met de volgende opmaak:


<?php
$today = date("d-m-Y @ H:i:s");
$message = '<html><body>';
$message .= '<img src="http://mijnwebsite.nl/images/maillogo.png" />';
$message .= '<table rules="all" width="600" style="border-color: #c0c0c0;" cellpadding="2">';
$message .= "<tr><td colspan=4>Hartelijk dank voor uw bestelling.<br/>Bestel datum: $today</td></tr>";
$message .= "<tr><td colspan=4>Maak het verschuldigde bedrag van $TOTAL over op:<br/><br/>Rekening nummer: $rekeningnr<br/>T.n.v.: $tnv<br/>O.v.v ordernummer: $orderid</td></tr>";
$message .= "<tr><td colspan=4>Verzend adres:<br/><br/>$b_first $b_last<br/>$b_addr<br/>$b_zip $b_city<br/>$b_phone<br/>$b_email</td></tr>";
$message .= "<tr><td colspan=4>Factuuradres (indien afwijkend verzendadres):<br/><br/>$s_first $s_last<br/>$s_addr<br/>$s_zip $s_city</td></tr>";
$message .= "<tr><td width=120>Aantal:</td><td width=70>Prijs:</td><td width=110>Bestelcode:</td><td width=300>Artikelnaam:</td></tr>";
$message .= "<tr><td width=120>$QUANTITY_1</td><td width=70>$PRICE_1</td><td width=110>$ID_1</td><td width=300>$NAME_1</td></tr>";
if( $NAME_2 ) {$message .= "<tr><td width=120>$QUANTITY_2</td><td width=70>$PRICE_2</td><td width=110>$ID_2</td><td width=300>$NAME_2</td></tr>";}
if( $NAME_3 ) {$message .= "<tr><td width=120>$QUANTITY_3</td><td width=70>$PRICE_3</td><td width=110>$ID_3</td><td width=300>$NAME_3</td></tr>";}
if( $NAME_4 ) {$message .= "<tr><td width=120>$QUANTITY_4</td><td width=70>$PRICE_4</td><td width=110>$ID_4</td><td width=300>$NAME_4</td></tr>";}
if( $NAME_5 ) {$message .= "<tr><td width=120>$QUANTITY_5</td><td width=70>$PRICE_5</td><td width=110>$ID_5</td><td width=300>$NAME_5</td></tr>";}
$message .= "<tr><td colspan=4>SUBTOTAAL: $SUBTOTAL</td></tr>";
$message .= "<tr><td colspan=4>BTW (21%): $TAX</td></tr>";
$message .= "<tr><td colspan=4>Verzendkosten: $SHIPPING</td></tr>";
$message .= "<tr><td colspan=4><b>TOTAAL: $TOTAL</b></td></tr>";
$message .= "<tr><td colspan=4>Opmerkingen:<br><br>$comment</td></tr>";
$message .= "</table>";
$message .= "</body></html>";

$subject = " Nieuwe bestelling via website";
$headers  = "Van: $b_email\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

mail($youremail, $subject, $message, $headers);
?>


De email ziet eruit als in het plaatje getoond:


Wat doe ik verkeerd waardoor er gegevens missen?

B.v.d. Dirk.

P.s., hoe kan ik de code hier in een codeveld zetten (betere leesbaarheid)
[ignore]Door je PHP-script zoals gewoonlijk aan te bieden tussen <?php en ?>-tags (vanwege de uiteindelijke kleurcodes) en daarna tussen[/ignore] [code] en [/code].
Hallo Aar,

Hartelijk dank.

Dirk.
Welke gegevens missen er verder in je mail?
Deze gegevens:


<?php
$message .= "<tr><td colspan=4>Verzendkosten: $SHIPPING</td></tr>";
$message .= "<tr><td colspan=4><b>TOTAAL: $TOTAL</b></td></tr>";
$message .= "<tr><td colspan=4>Opmerkingen:<br><br>$comment</td></tr>";
?>


Ook vreemd is dat de tekst over 'Geen virus gevonden' binnenin de table terecht komt.
Waar komen die variabelen vandaan?
Deze worden hier gedeclareerd:


<?php
$rekeningnr    = "aangepast";
$tnv           = "D.Siersema";

// ordernummer
$stamp = strtotime ("now");
$orderid = "SCS$stamp";
$orderid = str_replace(".", "", "$orderid");

// post variabelen
$b_first =  $_POST["b_first"];
$b_last =  $_POST["b_last"];
$s_first =  $_POST["s_first"];
$s_last =  $_POST["s_last"];
$b_addr =  $_POST["b_addr"];
$s_addr =  $_POST["s_addr"];
$b_zip =  $_POST["b_zip"];
$s_zip =  $_POST["s_zip"];
$b_city =  $_POST["b_city"];
$s_city =  $_POST["s_city"];
$b_phone =  $_POST["b_phone"];
$b_email =  $_POST["b_email"];
$comment = $_POST['comment'];

// bestel variabelen
$ID_1 = $_POST["ID_1"];
$QUANTITY_1 = $_POST["QUANTITY_1"];
$PRICE_1 = $_POST["PRICE_1"];
$NAME_1 = $_POST["NAME_1"];
$SHIPPING_1 = $_POST["SHIPPING_1"];
$ADDTLINFO_1 = $_POST["ADDTLINFO_1"];
$ID_2 = $_POST["ID_2"];
$QUANTITY_2 = $_POST["QUANTITY_2"];
$PRICE_2 = $_POST["PRICE_2"];
$NAME_2 = $_POST["NAME_2"];
$SHIPPING_2 = $_POST["SHIPPING_2"];
$ADDTLINFO_2 = $_POST["ADDTLINFO_2"];
$ID_3 = $_POST["ID_3"];
$QUANTITY_3 = $_POST["QUANTITY_3"];
$PRICE_3 = $_POST["PRICE_3"];
$NAME_3 = $_POST["NAME_3"];
$SHIPPING_3 = $_POST["SHIPPING_3"];
$ADDTLINFO_3 = $_POST["ADDTLINFO_3"];
$ID_4 = $_POST["ID_2"];
$QUANTITY_4 = $_POST["QUANTITY_4"];
$PRICE_4 = $_POST["PRICE_4"];
$NAME_4 = $_POST["NAME_4"];
$SHIPPING_4 = $_POST["SHIPPING_4"];
$ADDTLINFO_4 = $_POST["ADDTLINFO_4"];
$ID_5 = $_POST["ID_5"];
$QUANTITY_5 = $_POST["QUANTITY_5"];
$PRICE_5 = $_POST["PRICE_5"];
$NAME_5 = $_POST["NAME_5"];
$SHIPPING_5 = $_POST["SHIPPING_5"];
$ADDTLINFO_5 = $_POST["ADDTLINFO_5"];

// bedrag variabelen
$SHIPPING = $_POST['SHIPPING'];
$SUBTOTAL = $_POST['SUBTOTAL'];
$TAX = $_POST['TAX'];
$TOTAL = $_POST['TOTAL'];
?>
Waarom wil je eigenlijk tientallen variabelen kopiëren naar nieuwe variabelen?
Je had natuurlijk ook direct die $_POST-variabelen in je mail kunnen gebruiken.
Geheugenverspilling dus ;-)

$_POST["SHIPPING_1"], $_POST['TOTAL'] en $_POST['comment'] zijn verder gewoon niet ingevuld.
Kijk eens naar deze code. Dan zie je wat er zich in je $_POST-variabele voor waardes bevinden.

<?php
echo "<pre>".print_r($_POST,1)."</pre>";
?>


Verder weet ik niet precies wat de rest het script allemaal doet, maar moet een totaalbedrag niet automatisch utigerekend worden, incl. de tax?
Handmatig invoeren kan, maar dat kan ongewenste fouten geven.
Ik heb 2 regels omgedraaid:

<?php
$message .= "<tr><td colspan=4>SUBTOTAAL: $SUBTOTAL</td></tr>";
$message .= "<tr><td colspan=4>BTW (21%): $TAX</td></tr>";
$message .= "<tr><td colspan=4>Verzendkosten: $SHIPPING</td></tr>";
$message .= "<tr><td colspan=4><b>TOTAAL: $TOTAL</b></td></tr>";
$message .= "<tr><td colspan=4>Opmerkingen:<br><br>$comment</td></tr>";


$message .= "<tr><td colspan=4>Verzendkosten: $SHIPPING</td></tr>";
$message .= "<tr><td colspan=4><b>TOTAAL: $TOTAL</b></td></tr>";
$message .= "<tr><td colspan=4>SUBTOTAAL: $SUBTOTAL</td></tr>";
$message .= "<tr><td colspan=4>BTW (21%): $TAX</td></tr>";
$message .= "<tr><td colspan=4>Opmerkingen:<br><br>$comment</td></tr>";
?>


met als resultaat:
Je formulier is nu wel goed, maar het kan geen kwaad om de boel even meteen goed aan te pakken.
Het formulier is niet goed, in het 1e geval missen de verzendkosten, totaalprijs en het commentaar.
In het 2e geval (na verwisselen van 2 regels) missen subtotaal, btw en het commentaar.

Ra, ra...?

Ook verspringt het virusbericht naar een andere plek terwijl deze nergens gecodeerd wordt neergezet.

Reageren