OPGELOST Inhoud e-mail leeg...
In een formulier haal ik een global variabele op, die is doorgegeven via de link naar het formulier:
$artikel = $_GET['code'];
De variabele toon ik in het formulier:
echo "<table class='tabel' border='0' cellspacing='0' cellpadding='0'>";
echo "<form method='post' action='" . $_SERVER['PHP_SELF'] . "'>";
echo "<tr><td> </td></tr>";
echo "<tr><td>Artikelnummer</td>";
echo "<td> $artikel </td></tr>";
Vervolgens wil ik de inhoud van het formulier mailen:
$inhoud_mail .= "Artikelnummer: " . $artikel . "\n";
De inhoud van artikelnummer staat wel op het scherm, maar komt niet in mijn mail.
Wat doe ik fout???
Gewijzigd op 10/10/2011 16:16:21 door Bram Porter
XSS gevoelig!
Je script is wel Maar heb je enig idee waarom de $artikel in de mail leeg is?
Omdat je het niet met het formulier meestuurt,
De inhoud van de mail bevat toch $artnr
Vervolgens doe ik:
mail($mail_ontv, $subject, $inhoud_mail, $headers);
Gewijzigd op 10/10/2011 15:23:28 door Bram Porter
op dezelfde pagina waar de GET binnenkomt?
Ben er al een dag mee aan het worstelen...
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
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
<?
$artikel = $_GET['code'];
// geef e-mail adres op van ontvanger
$mail_ontv = "[email protected]";
$subject = "Bericht van website";
function checkmail($mail)
{
$email_host = explode("@", $mail);
$email_host = $email_host['1'];
$email_resolved = gethostbyname($email_host);
if ($email_resolved != $email_host && eregi("^[0-9a-z]([-_.~]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$mail))
$valid = 1;
return $valid;
}
if (!$_POST['submit'] || $_POST['submit'] && ( !$_POST['naam'] || !$_POST['aantal'] || !$_POST['aflever'] ))
{
if ($_POST['submit'] && ( !$_POST['mail'] || !$_POST['naam'] || !$_POST['aantal'] || !$_POST['aflever'] ))
{
echo "<p class='roodvet'>Vul naam, e-mailadres, type, aantal en afleverplaats in.</p>";
}
echo "<p >Wilt u uw naam, e-mailadres, het aantal pakken en de plaats van aflevering invullen?<br /> U ontvangt van ons dan zo spoedig mogelijk een offerte.</p>";
echo "<tr><td> </td>";
// form + tabel
echo "<table class='tabel' border='0' cellspacing='0' cellpadding='0'>";
echo "<form method='post' action='" . $_SERVER['PHP_SELF'] . "'>";
echo "<tr><td>Naam*</td>";
echo "<td><input type='text' size='40' name='naam' value='" . $_POST['naam'] . "'></td></tr>";
echo "<tr><td>E-mailadres*</td>";
echo "<td><input type='text' size='20' name='mail' value='" . $_POST['mail'] . "'></td></tr>";
echo "<tr><td>Telefoonnummer</td>";
echo "<td><input type='text' size='10' name='telefoon' value='" . $_POST['telefoon'] . "'></td></tr>";
echo "<tr><td>Woonplaats </td>";
echo "<td><input type='text' size='40' name='woonplaats' value='" . $_POST['woonplaats'] . "'></td></tr>";
echo "<tr><td> </td></tr>";
echo "<tr><td><p ><img src='http://www.xxxxxx.nl/images-winkel/" . $_GET['plaatje'] . "'></p><td></tr>";
echo "<tr><td> </td></tr>";
echo "<tr><td>Type gevelstenen</td>";
echo "<td> $artikel </td></tr>";
echo "<tr><td>Aantal pakken*</td>";
echo "<td><input type='text' size='40' name='aantal' value='" . $_POST['aantal'] . "'></td></tr>";
echo "<tr><td>Plaats van aflevering*</td>";
echo "<td><input type='text' size='40' name='aflever' value='" . $_POST['aflever'] . "'></td></tr>";
echo "<tr><td>* Verplichte velden</td></tr>";
// button
echo "<tr><td><input type='submit' class='knop' name='submit' value='Versturen'></td></tr>";
echo "</form>";
echo "</table>";
// einde form + tabel
echo "<p> </p>";
echo "<p> </p>";
echo "<p >We gaan vertrouwelijk met uw gegevens om. We verstrekken uw e-mailadres niet aan derden.</p>";
}
// versturen
else
{
// set datum
$datum = date("d.m.Y H:i");
// set ip
$ip = $_SERVER['REMOTE_ADDR'];
$inhoud_mail = "===================================================\n";
$inhoud_mail .= "Offerteaanvraag \n";
$inhoud_mail .= "===================================================\n\n";
$inhoud_mail .= "Naam: " . $_POST['naam'] . "\n";
$inhoud_mail .= "E-mailadres: " . $_POST['mail'] . "\n";
$inhoud_mail .= "Telefoonnummer: " . $_POST['telefoon'] . "\n";
$inhoud_mail .= "Woonplaats: " . $_POST['woonplaats'] . "\n";
$inhoud_mail .= "Type: " . $artikel . "\n";
$inhoud_mail .= "Aantal: " . $_POST['aantal'] . "\n";
$inhoud_mail .= "Afleverplaats: " . $_POST['aflever'] . "\n";
$inhoud_mail .= "===================================================\n\n";
$inhoud_mail .= "Verstuurd op $datum via het ip " . $ip . "\n\n";
$inhoud_mail .= "===================================================\n\n";
// --------------------
// spamprotectie
// ------
$headers = "From: " . $_POST['naam'] . " <" . $_POST['mail'] . ">";
$headers = stripslashes($headers);
$headers = str_replace("\n", "", $headers); // Verwijder \n
$headers = str_replace("\r", "", $headers); // Verwijder \r
mail($mail_ontv, $subject, $inhoud_mail, $headers);
?>
$artikel = $_GET['code'];
// geef e-mail adres op van ontvanger
$mail_ontv = "[email protected]";
$subject = "Bericht van website";
function checkmail($mail)
{
$email_host = explode("@", $mail);
$email_host = $email_host['1'];
$email_resolved = gethostbyname($email_host);
if ($email_resolved != $email_host && eregi("^[0-9a-z]([-_.~]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$mail))
$valid = 1;
return $valid;
}
if (!$_POST['submit'] || $_POST['submit'] && ( !$_POST['naam'] || !$_POST['aantal'] || !$_POST['aflever'] ))
{
if ($_POST['submit'] && ( !$_POST['mail'] || !$_POST['naam'] || !$_POST['aantal'] || !$_POST['aflever'] ))
{
echo "<p class='roodvet'>Vul naam, e-mailadres, type, aantal en afleverplaats in.</p>";
}
echo "<p >Wilt u uw naam, e-mailadres, het aantal pakken en de plaats van aflevering invullen?<br /> U ontvangt van ons dan zo spoedig mogelijk een offerte.</p>";
echo "<tr><td> </td>";
// form + tabel
echo "<table class='tabel' border='0' cellspacing='0' cellpadding='0'>";
echo "<form method='post' action='" . $_SERVER['PHP_SELF'] . "'>";
echo "<tr><td>Naam*</td>";
echo "<td><input type='text' size='40' name='naam' value='" . $_POST['naam'] . "'></td></tr>";
echo "<tr><td>E-mailadres*</td>";
echo "<td><input type='text' size='20' name='mail' value='" . $_POST['mail'] . "'></td></tr>";
echo "<tr><td>Telefoonnummer</td>";
echo "<td><input type='text' size='10' name='telefoon' value='" . $_POST['telefoon'] . "'></td></tr>";
echo "<tr><td>Woonplaats </td>";
echo "<td><input type='text' size='40' name='woonplaats' value='" . $_POST['woonplaats'] . "'></td></tr>";
echo "<tr><td> </td></tr>";
echo "<tr><td><p ><img src='http://www.xxxxxx.nl/images-winkel/" . $_GET['plaatje'] . "'></p><td></tr>";
echo "<tr><td> </td></tr>";
echo "<tr><td>Type gevelstenen</td>";
echo "<td> $artikel </td></tr>";
echo "<tr><td>Aantal pakken*</td>";
echo "<td><input type='text' size='40' name='aantal' value='" . $_POST['aantal'] . "'></td></tr>";
echo "<tr><td>Plaats van aflevering*</td>";
echo "<td><input type='text' size='40' name='aflever' value='" . $_POST['aflever'] . "'></td></tr>";
echo "<tr><td>* Verplichte velden</td></tr>";
// button
echo "<tr><td><input type='submit' class='knop' name='submit' value='Versturen'></td></tr>";
echo "</form>";
echo "</table>";
// einde form + tabel
echo "<p> </p>";
echo "<p> </p>";
echo "<p >We gaan vertrouwelijk met uw gegevens om. We verstrekken uw e-mailadres niet aan derden.</p>";
}
// versturen
else
{
// set datum
$datum = date("d.m.Y H:i");
// set ip
$ip = $_SERVER['REMOTE_ADDR'];
$inhoud_mail = "===================================================\n";
$inhoud_mail .= "Offerteaanvraag \n";
$inhoud_mail .= "===================================================\n\n";
$inhoud_mail .= "Naam: " . $_POST['naam'] . "\n";
$inhoud_mail .= "E-mailadres: " . $_POST['mail'] . "\n";
$inhoud_mail .= "Telefoonnummer: " . $_POST['telefoon'] . "\n";
$inhoud_mail .= "Woonplaats: " . $_POST['woonplaats'] . "\n";
$inhoud_mail .= "Type: " . $artikel . "\n";
$inhoud_mail .= "Aantal: " . $_POST['aantal'] . "\n";
$inhoud_mail .= "Afleverplaats: " . $_POST['aflever'] . "\n";
$inhoud_mail .= "===================================================\n\n";
$inhoud_mail .= "Verstuurd op $datum via het ip " . $ip . "\n\n";
$inhoud_mail .= "===================================================\n\n";
// --------------------
// spamprotectie
// ------
$headers = "From: " . $_POST['naam'] . " <" . $_POST['mail'] . ">";
$headers = stripslashes($headers);
$headers = str_replace("\n", "", $headers); // Verwijder \n
$headers = str_replace("\r", "", $headers); // Verwijder \r
mail($mail_ontv, $subject, $inhoud_mail, $headers);
?>
</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<div >
<p >Bedankt voor uw aanvraag. Wij sturen u zo spoedig mogelijk een offerte.<br/>
</p>
</div>
Gewijzigd op 10/10/2011 15:47:32 door Bram Porter
Als je het formulier invult en verstuurt is de $_GET leeg. Dus zet het artikel ook in het formulier, desnoods als hidden of readonly.
Maar is dat niet voldoende?
echo "<td> $artikel </td></tr>";
Ik had het eerst in een $_POST het artikelnummer staan. Maar dan was het ook leeg in de mail.
echo '<input type="text" name="artikel" value="' . $artikel . '" readonly />';
En dan gewoon ophalen met $_POST['artikel'].
Toevoeging op 10/10/2011 16:09:26:
Nog eenvoudiger is dit:
Verander
echo "<form method='post' action='" . $_SERVER['PHP_SELF'] . "'>";
In
echo '<form method="post" action="?code=' . $artikel . '">';
Mijn dank is groot. Je weet niet half hoe groot!!
Het werkt.
Succes verder.