phpmailer via checkbox mail versturen werkt niet
Hallo,
Ik heb een database met E-mail adressen. D.m.v. een formulier kan ik een e-mail versturen naar alle e-mail adressen in de database. Maar ik wil de e-mail adressen filteren d.m.v. checkbox.
Maar dit werkt niet. Ik maak gebruik van een array en hij ziet de id wel, die in de db staan, maar verstuurt naar alle e-mail adressen.
mijn code is:
kan iemand mij helpen?
alvast bedankt.
Ik heb een database met E-mail adressen. D.m.v. een formulier kan ik een e-mail versturen naar alle e-mail adressen in de database. Maar ik wil de e-mail adressen filteren d.m.v. checkbox.
Maar dit werkt niet. Ik maak gebruik van een array en hij ziet de id wel, die in de db staan, maar verstuurt naar alle e-mail adressen.
mijn code is:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
if (isset($_POST['checkbox']))
{
print_r($_POST['checkbox']); //de browser ziet wel de goede checkbox, id
$query = "SELECT * FROM ledenlijst"; //maar hoe kan ik hier mailen?
$result = mysqli_query($link, $query) or die(mysqli_error());
while ($record = mysqli_fetch_array($result)) {
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
//$mail->MsgHTML($message);
$mail->Body = $message;
$mail->AddAddress($record["e_mail"], $record["voornaam"]);//die voert hij altijd uit, mailen naar alle adressen
}
}
?>
if (isset($_POST['checkbox']))
{
print_r($_POST['checkbox']); //de browser ziet wel de goede checkbox, id
$query = "SELECT * FROM ledenlijst"; //maar hoe kan ik hier mailen?
$result = mysqli_query($link, $query) or die(mysqli_error());
while ($record = mysqli_fetch_array($result)) {
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
//$mail->MsgHTML($message);
$mail->Body = $message;
$mail->AddAddress($record["e_mail"], $record["voornaam"]);//die voert hij altijd uit, mailen naar alle adressen
}
}
?>
kan iemand mij helpen?
alvast bedankt.
ok, bedankt voor info,
maar als ik dit doe dan krijg ik de foutmelding:
Warning: mysqli_real_escape_string() expects parameter 2 to be string, array given in C:\xampp\htdocs\map\list.php on line 52
You must provide at least one recipient email address.
wat betekent deze warning?
maar als ik dit doe dan krijg ik de foutmelding:
Warning: mysqli_real_escape_string() expects parameter 2 to be string, array given in C:\xampp\htdocs\map\list.php on line 52
You must provide at least one recipient email address.
wat betekent deze warning?
Robert Jansen op 29/02/2016 19:42:07:
ok, bedankt voor info,
maar als ik dit doe dan krijg ik de foutmelding:
Warning: mysqli_real_escape_string() expects parameter 2 to be string, array given in C:\xampp\htdocs\map\list.php on line 52
You must provide at least one recipient email address.
wat betekent deze warning?
maar als ik dit doe dan krijg ik de foutmelding:
Warning: mysqli_real_escape_string() expects parameter 2 to be string, array given in C:\xampp\htdocs\map\list.php on line 52
You must provide at least one recipient email address.
wat betekent deze warning?
Soms kan het best handig zijn om de functies die je gebruikt eens op te zoeken...
Je hebt dus een array in je $_POST['checkbox'] zitten. Dan kan je het beste met implode() er een lijst van ID's van maken, die je met WHERE [field] IN in je query verwerken.
Code (php)
1
2
3
4
2
3
4
<?php
$ids = implode(',',$_POST['checkbox']);
$query = "SELECT * FROM ledenlijst WHERE id IN (".mysqli_real_escape_string($link,$ids).")";
?>
$ids = implode(',',$_POST['checkbox']);
$query = "SELECT * FROM ledenlijst WHERE id IN (".mysqli_real_escape_string($link,$ids).")";
?>
het werkt, bedankt voor de hulp.
volgens mij heeft die escape niet zo heel veel zin op deze manier.
als er een checkbox is met de waarde "a" gaat hij sowieso al fout.
als er een checkbox is met " 'a " zal er IN (1,3,\'a, 8) in je query staan --> foutmelding
als er "1) OR 1 IN (1" in je checkbox value staat, wordt de query
WHERE id IN (1) OR 1 IN (1)
en krijg je vervolgens alle records
En je mag zelf wat experimentern met het stukje 1 IN (1) om te kijken of je daar geen truncate of drop in kwijt kunt.
als er een checkbox is met de waarde "a" gaat hij sowieso al fout.
als er een checkbox is met " 'a " zal er IN (1,3,\'a, 8) in je query staan --> foutmelding
als er "1) OR 1 IN (1" in je checkbox value staat, wordt de query
WHERE id IN (1) OR 1 IN (1)
en krijg je vervolgens alle records
En je mag zelf wat experimentern met het stukje 1 IN (1) om te kijken of je daar geen truncate of drop in kwijt kunt.
Gewijzigd op 01/03/2016 10:58:39 door Ivo P
real_escape_string() zonder (enkele) quotes om een querydeel met deze functie is per defintie niet veilig. Alleen deze combinatie is veilig mits je character encoding op orde is. Alle escaping functionaliteit (in zijn algemeenheid) opereert namelijk op deze aanname.
Hier kun je beter gaan voor input filtering: controleer of de inhoud van $_POST['checkbox'] alle id's betreffen. En wellicht ten overvloede zou je alle id's kunnen voorzien van quotes en elk id kunnen escapen met real_escape_string(). Het blijft per slot van rekening user input.
Hier kun je beter gaan voor input filtering: controleer of de inhoud van $_POST['checkbox'] alle id's betreffen. En wellicht ten overvloede zou je alle id's kunnen voorzien van quotes en elk id kunnen escapen met real_escape_string(). Het blijft per slot van rekening user input.




