Mailing do wielu osób i zapis w bazie

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

 
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 ;


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
<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
<?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

Ostatnio na forum

  1. PHP Developer - Gdań... moze kobieta
  2. PHP Developer - Gdań... Tomek ARforce
  3. Hackathon Distribute... aleksandra_c
  4. Klasa obsługi szablo... freeboc
  5. PHP [Symfony] Develo... NewPerspective
  6. [Wrocław][PHP Develo... Software house Amsterdam Standard sp. z o.o.
  7. Senior PHP Developer... Kingit

Skrypty użytkowników

  1. Klasa obsługi szablo... Lirdoner
  2. Sekcje user76
  3. Klasa walidująca for... user76
  4. Licznik Gości online korey
  5. Form Builder Comandeer
  6. Dynamiczny licznik z... korey
  7. Captcha Comandeer