Flash Newsletter (AS2, PHP, MySQL) – 2
A doua parte a tutorialului de construire a unui newsletter in Flash. In prima parte ne-am ocupat de interfata pentru utilizatorul obisnuit si de inscrierea mail-urilor intr-o baza de date MySQL.
Acum avem nevoie de modulul de trimitere al mail-urilor, nu-i asa? Fara acesta am avea o simpla lista cu adrese de mail.
Intram iar in Flash si cream o noua fisa de lucru de 800pxX550px. In cadrul acesteia inseram urmatoarele: un input field numit sub, un altul numit exp si un input filed (setat ca multiline) numit msg. Sub acestea mai desenam un buton numit send si un dynamic text field numit status.
flash_newsletter_admin.jpg” target=”_blank”>
Acum sa trecem la partea de actionscript. Dam click pe primul frame si apasam tasta F9. In fereastra de actiuni inseram codul urmator.
function sendMails() {
status.text = " ";
var sendMailVars:LoadVars = new LoadVars();
var receiveLoad:LoadVars = new LoadVars();
sendMailVars.subject = sub.text;
sendMailVars.email = exp.text;
sendMailVars.msg = msg.text;
sendMailVars.sendAndLoad("sendMail.php",receiveLoad,"POST");
receiveLoad.onLoad = function() {
if (this.sts == "true") {
status.text = "Success! "+this.count+" messages were sent.";
} else {
status.text = "An error has occured.";
}
};
}
send.onPress = sendMails;
Practi generam o functie numita sendMails care nu face altceva decat sa preia continutul input field-urilor si sa il transpuna in cadrul variabilei sendMailVars. Explicatiile detaliate despre fiecare linie de cod le puteti gasi in prima parte a tutorialului.
Dupa ce variabilele au fost trimise catre sendMail.php, verificam this.sts pentru a vedea daca operatiunea a fost efectuata cu succes, daca variabila este true, campul de text status primeste, pe langa string-ul aferent de succes, variabila this.count care contine numarul de mail-uri trimise (vom vedea in partea de php cum se formeaza).
Inainte de a scrie si explica codul PHP, haideti sa mai simplificam putin treaba. Cu acesta, deja avem 2 fisiere PHP… daca schimbam baza de date va trebui sa modificam 2 fisiere… in urmatoarele parti vom adauga alte script-uri, si mai multa munca. Haideti sa cream un fisier PHP numit config.php in care sa avem urmatoarele:
<?php
$user = 'username';
$pass = 'pass';
$host = 'localhost';
$database = 'database name';
?>
O sa vedeti imediat de ce am facut asa. Urmatorul pas, cream fisierul sendMail.php.
<?php
include 'config.php';
$link = mysql_connect ($host, $user, $pass);
mysql_select_db ($database);
$query = "SELECT * FROM test";
$results = mysql_query($query);
$mail = strip_tags($_POST['email']);
$msg = $_POST['msg'];
$sub = strip_tags($_POST['subject']);
$count=1;
$message = "" . $msg . "";
$headers = "From: " . $mail;
$headers .= "< " . $mail . ">rn";
$headers .= "Content-type: text/htmlrn";
$headers .= "Reply-To: " . $mail . "rn";
$headers .= "Return-Path: " . $mail;
while($line = mysql_fetch_assoc($results)) {
$count++;
mail($line["mail"], $sub, $message, $headers);
}
$count--;
echo "&sts=true&count=$count&";
?>
Dupa cum vedeti, in prima linie de cod facem legatura intre config.php si fisierul nostru. Astfel, daca schimbati baza de date va trebui sa modificati un singur fisier, nu 10.
$mail = strip_tags($_POST['email']);
$msg = $_POST['msg'];
$sub = strip_tags($_POST['subject']);
Cream 3 variabile PHP care preiau datele trimise de Flash. Dupa cum puteti observa, $msg preia variabila msg cu tot cu tagurile HTML aferente, astfel putem genera mail-ul in format HTML.
$count=1;
Initiem variabila de numarare a mail-urilor trimise.
$message = "" . $msg . "";
Variabila $message va primi continutul mesajului propriu-zis in interiorul tag-urilor HTML. Desigur, exista multe variante de a trimite un mail in format HTML, dar aceasta este cea mai simpla metoda.
$headers = "From: " . $mail;
$headers .= "< " . $mail . ">rn";
$headers .= "Content-type: text/htmlrn";
$headers .= "Reply-To: " . $mail . "rn";
$headers .= "Return-Path: " . $mail;
Pentru a putea citi si raspunde usor mail-ului, va fi nevoie sa customizam putin headerul acestuia. Este indicat sa nu modificati aceste configuratii.
Acum… avem subiectul mesajului stocat intr-o variabila, la fel si continutul mesajului… adresa de e-mail a expeditorului o avem in cadrul variabilei $mail… ne mai lipsesc destinatarii.
$query = "SELECT * FROM tabel";
$results = mysql_query($query);
while($line = mysql_fetch_assoc($results)) {
$count++;
mail($line["mail"], $sub, $message, $headers);
}
Selectam din baza de date toate inregistrarile din tabelul tabel, dupa aceea, intr-un loop, extragem continutul coloanei mail de pe fiecare linie si ii trimitem mail-ul corespunzator. In acelasi timp, variabila de numarare se mareste cu 1.
PHP-ul trimite mail-uri in mai multe feluri. Functia mail() este destul de primitiva, dar simplu de folosit. Este posibil ca host-ul sa opreasca functia din motive de spam, dar le puteti spune oricand sa o activeze. Structura de baza a functiei este aceasta:
mail(destinatar, subiect, mesaj, header);
In final, vom afisa pe ecran rezultatul.
$count--;
echo "&sts=true&count=$count&";
Este necesar sa micsoram variabila $count cu o unitate pentru ca aceasta, cand va iesi din loop, va fi mai mare cu 1 decat numarul mail-urilor trimise. Sau o putem initia cu 0 si nu va mai fi necesar sa o scadem.
Gata si cu a doua parte. Pe viitor, daca vi se pare interesant, putem face urmatoarele: editare useri, atasament in newsletter, selectie personalizata de useri etc.
C’ya next time.
Ti-a placut articolul Flash Newsletter (AS2, PHP, MySQL) – 2?
TweetAi nevoie de rezolvarea unei probleme la informatica?
Iti recomandam si urmatoarele articole:
7 comentarii pentru Flash Newsletter (AS2, PHP, MySQL) – 2
Discuta articolul Flash Newsletter (AS2, PHP, MySQL) – 2
Contul tau
Categorii
- Atestat Info C/C++ (21)
- Atestat Info Pascal (21)
- Learn AJAX (3)
- Learn Android (5)
- Learn C++ (32)
- Learn CSS (11)
- Learn Database (9)
- Learn Flash (33)
- Learn HTML (14)
- Learn JAVA (9)
- Learn Javascript (14)
- Learn jQuery (17)
- Learn Pascal (28)
- Learn PHP (21)
- Learn SQL (5)
- Learn Visual FoxPro (4)
- Tips & Tricks (22)
Mozku Network
Ne gasesti si pe Facebook
Articole noi
- Cum sa detectati rezolutia telefonului intr-o aplicatie Android
- Cum se evita oprirea fortata a unei aplicatii
- Cum sa porniti o activitate noua in Android
- Cum sa adaugati un ImageView intr-o aplicatie Android
- Cum sa adaugati un Button intr-o aplicatie Android
- Cum sa utilizati un ArrayList in Java
- Bifeaza toate checkbox-urile folosind jQuery
- Validare formular folosind jQuery
Fisiere populare
- Proiect Atestat Informatica Visual FoxPro (439)
- Twitter Patterns (202)
- Flash Newsletter (126)
- hitTest Flash (99)
- Baza de date auto revizuita (98)

Frumos tutorialul, chiar aveam nevoie de asa ceva in ultima vreme, am realizat prima parte a tutorialului si functioneaza, problema ar fi la a doua unde am vazut si niste neconcordante, cum ar fi: $query = “SELECT * FROM test”;, cred ca test e de fapt tabel dar si cu inlocuirea asta si cu o mica proba tot nu trimite mail (mai am cateva scripturi php pe site care functioneaza bine) deci banuiesc ca problema e in fisierul sendMail.php, corectati-ma daca gresesc. Multumesc pentru tutorial, la cat mai multe ca sunt utile.
Ma bucur ca ai gasit folositor acest tutorial :-)
Ce facem exact: extragem toate datele din tabelul numit “tabel”, iar in while-ul urmator navigam printre toate inregistrarile.
In while observi ca avem: mail($line["mail"], $sub, $message, $headers). Mai exact, trimitem cate un e-mail la fiecare adresa inscrisa in tabelul de mai sus. Script-ul a fost verificat de multe ori si este deja implementat cu succes pe diferite site-uri.
Poti incerca sa faci un fisier php care sa contina doar: mail(“mailultau@domeniu.ro”, “Test”, “Test”, $headers); si sa verifici daca primesti mail-ul. Unele hosting-uri nu permit trimiterea de mail-uri direct, decat printr-un server SMTP (daca ai nevoie putem dezvolta tutorialul si putem configura trimiterea de mail-uri pt un anumit server). $headers lasa-l cum este in tutorial, doar inlocuieste numele si mail-ul cu niste date oarecare.
Daca primesti mail-ul astfel, da-ne de stire si vedem ce putem face cu acest modul de newsletter.
Numai bine.
Buna seara, dupa indicatiile de mai sus, am testat si varianta cu mail(“mailultau@domeniu.ro”, “Test”, “Test”, $headers), vad ca nici asa nu trimite e-mail, nu as crede sa fie de la host din moment ce formularul de contact functioneaza, tin sa precizez ca am ceva erori si in cpanel, la accesarea directa a add.php e ok dar la accesarea sendMail.php afiseaza exact ce contine scriptul, ceea ce nu cred ca e ok. Precizez ca e vorba de IPV Host dar pana acuma nu am avut probleme si am instalat pana si scripturi CGI, o sa mai revizuiesc inca o data partea de flash si apoi sa vad si php. Foarte bun si tutorialul cu ip-ul utilizatorului, ar mai fi de adaugat unul cu utilizatori online si eventual unul cu vote(poll), o sa postez maine rezultatele, poate pana la urma il rezolv cumva, un weekend fain.
Buna ideea pentru useri online :D o sa scriu un tutorial in zilele urmatoare. Din cate stiu IPVHost au functia php mail() activa in toate pachetele lor de hosting, vezi sa nu fi omis vreun parametru.
PS: sper ca in fisierul .php cand ai copiat scriptul ai modificat prima linie de cod (in exemplu era un spatiu intre < si ? pentru ca nu il afisa corect modulul vechi, acum am rectificat):
Intr-adevar, asta a fost problema, acum e ok fisierul si trimite e-mail, nu am pus spatiu cu toate ca am scris codul in notepad da nu mi-a sarit in fata…shit happens, ms fain de ajutorul acodat, daca e ceva mai am cateva tutoriale de flash cu backend PHP si sunt disponibil sa ajut ca si eu am fost ajutat la randul meu, oricum voi vizita site-ul periodic.
Scuze ca m-am exprimat gresit, de fapt era spatiu, oricum merge bine pana acum, integrata in modulul de pe site ar merge la fel din moment ce e AS2…pentru astfel de scripturi unii cer bani si nu ii contrazic, pe flashden sunt exemple care costa si 20 euro dar nu animatia aia conteaza ci functionalitatea, ma bucur ca inca sunt tutoriale cu care omul se poate descurca in mod decent, fara copy-paste si referate.
Orice e binevenit atata timp cat ii va ajuta si pe altii. Poti trimite un mail la stefan [at] mozku [dot] com si discutam mai multe :-D