Mailing do wielu osób i zapis w bazie

2010-10-27 13:27:13 Post #1 user76

 
1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE TABLE `mailing` (
  `id` int(15) NOT NULL auto_increment,
  `rodzaj` varchar(25) NOT NULL default '',
  `email` varchar(25) NOT NULL default '',
  `nadawca` varchar(25) NOT NULL default '',
  `adresaci` text NOT NULL,
  `temat` varchar(25) NOT NULL default '',
  `wiadomosc` text NOT NULL,
  `data` datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=62 ;



1
2
3
4
5
6
7
8
9
CREATE TABLE `osoby` (
  `id` int(11) NOT NULL auto_increment,
  `imie` varchar(25) NOT NULL default '',
  `nazwisko` varchar(25) NOT NULL default '',
  `email` varchar(50) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM ;



formularz
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
<form method="post" action="skrypt.php">
Nadawca (nazwa):<br /><input name="Nadawca_nazwa" type="text" size="45" maxlength="80" /><br /><br />
Nadawca (e-mail):<br /><input name="Nadawca_email" type="text" size="45" maxlength="80" /><br /><br />
Adresaci:<br />
<
select name="Osoby[]" multiple="multiple" size="10" />

<?

include (
"baza/baza.php"); 

$query="SELECT * FROM osoby";
$wynik=mysql_query($query);

if(
mysql_num_rows($wynik) > 0) {
  
while(
$r mysql_fetch_array($wynik)) {  
echo 
"<option value=\"{$r[14]} \"> ".$r[1]." ".$r[2]."  [ ".$r[14]." ] </option>"; }
}
 else {
        echo 
"<option checked=\"checked\" value=\"brak\">Brak osób w bazie</option>"; }


</select>
<br /><br />Temat:<br /><input name="Temat" type="text" size="45" maxlength="40" />

<br /><br />Wiadomość:<br /><textarea name="Tresc" cols="42" rows="7"></textarea>

<input type="hidden" name="Rodzaj" value="Do wielu osob" /><br /><br />

<br /><br />

<input type="submit" name="wyslij" value="Wyślij" />
<input type="reset" value="Wyczyść" />
<br />
</form>


skrypt
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
<?php include ("baza/sesja_admin.php"); ?> 
<?php

@$nadawca addslashes(trim($_POST['Nadawca_nazwa']));
@
$email addslashes(trim($_POST['Nadawca_email']));
@
$odbiorcy = (array)$_POST['Osoby'];
@
$temat addslashes(trim($_POST['Temat']));
@
$wiadomosc addslashes(trim($_POST['Tresc']));

$tresc "Nadawca: $nadawca\n\nWiadomosc: $wiadomosc";

$header "From: ".$email." ".$nadawca." \nContent-Type:".
            
' text/plain;charset="UTF-8"'.
            
"\nContent-Transfer-Encoding: 8bit";

$i=0;

while (isset(
$odbiorcy[$i]) && $odbiorcy[$i]!='')
{
mail($odbiorcy[$i], $temat$tresc$header);
$i++;
}

?>
<?php

include ("baza/baza.php"); 

@
$nadawca addslashes(trim($_POST['Nadawca_nazwa']));
@
$email addslashes(trim($_POST['Nadawca_email']));
@
$rodzaj addslashes(trim($_POST['Rodzaj']));
@
$temat addslashes(trim($_POST['Temat']));
@
$wiadomosc addslashes(trim($_POST['Tresc']));
@
$osoba implode(", "$_POST['Osoby']);

$zapytanie "INSERT INTO mailing SET rodzaj='$rodzaj',email='$email',nadawca='$nadawca',adresaci='$osoba',temat='$temat',wiadomosc='$wiadomosc',data=now() ";

$idzapytania mysql_query($zapytanie);

header("Location: komunikat.html");
 
?>

2010-10-27 13:40:32 Post #2 nospor

 
1) Do escepowania danych wkładanych do mysql nie używaj addslashes(). Używaj mysql_escape_string() lub mysql_real_escape_string()

2) Gdy nie ma userów do wysłania czemu wyświetlasz checkbox BRAK? Powinien być zwykły tekst

3) @$osoba = implode(", ", $_POST['Osoby'] )
Nie zabezbieczyłeś tej zmiennej przed SQLInjection - tu teoretycznie jesteś narażony na atak

2010-11-09 13:18:20 Post #3 korey

 
Chciałem zapytać czy kod został poprawiony

2010-11-09 13:27:38 Post #4 nospor

 
Z tego ci widzę to nie

2010-11-09 18:44:51 Post #5 user76

 
Podpowiedzi są zawarte w postach, więc wiadomo co poprawić. Ja nie poprawiałem mojego skryptu, bo nie mam na to teraz czasu, tworze edytorek tekstu i nie mam czasu.

2010-11-29 16:47:34 Post #6 user76

 
Jak wysłać plik mailem w php? np pdf?

2010-11-29 20:45:41 Post #7 nospor

 
http://pl2.php.net/manual/pl/function.mail.php
Szukaj po slowie "attachment"

Odpowiedz