Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Flash i php newsletter forma

[es] :: Flash :: Flash i php newsletter forma

[ Pregleda: 1889 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Ivica Vujović
Ivica Vujović
Beograd

Član broj: 44727
Poruke: 127



+5 Profil

icon Flash i php newsletter forma06.07.2011. u 16:40 - pre 155 meseci
Elem, kao sto naslov kaze, pokusavam da napravim neku jednostavnu newsletter formu koja ce iz flasha da pozove php skriptu i posalje mail.

Sad, nasao sam neki free kod na netu za contact forme pa pokusavam da prepravim za newsletter posto mi treba samo slanje maila koji se unese. Generalno nista komplikovano ali ipak ne uspevam da posaljem mail. Uz pomoc trace komande sam pratio sta se desava i skapirao da kod sledeceg dela koda zapinje:

Code:
var email_data:String = "&email=" + contact_email.text
                       + "&subject=Prijava na newsletter"
                       + "&message=" + contact_email.text;
        var URL_vars:URLVariables = new URLVariables(email_data);
        URL_vars.dataFormat = URLLoaderDataFormat.TEXT;
        
        URL_request.data = URL_vars;
        var_load.load(URL_request);
        var_load.addEventListener(Event.COMPLETE, receive_response);


Php skripta je sledeca:

Code:
<?php
$contact_email = $_POST['email'];


if( $contact_name == true )
{
    $sender = $contact_email;
    $receiver = "[email protected]";
    $client_ip = $_SERVER['REMOTE_ADDR'];
    $email_body = "Email: $sender \n\nSubject: Prijava na newsletter listu \n\nMessage: \n\n$sender ";        
    $extra = "From: $sender\r\n" . "Reply-To: $sender \r\n" . "X-Mailer: PHP/" . phpversion();

    if( mail( $receiver, $email_body, $extra ) ) 
    {
        echo "success=yes";
    }
    else
    {
        echo "success=no";
    }
}
?>


Sam CS5 mi salje sledecu gresku:

Code:
Error: Error #2101: The String passed to URLVariables.decode() must be a URL-encoded query string containing name/value pairs.
    at Error$/throwError()
    at flash.net::URLVariables/decode()
    at flash.net::URLVariables()
    at newsform_fla::MainTimeline/submit()


A evo i kompletnog as3 koda za svaki slucaj:

Code:
import flash.utils.Timer;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLVariables;
import flash.events.Event;
import flash.events.TimerEvent;
contact_email.text = "";
message_status.text = "";

send_button.addEventListener(MouseEvent.CLICK, submit);

var timer:Timer
var var_load:URLLoader = new URLLoader
var URL_request:URLRequest = new URLRequest("send_email.php");
URL_request.method = URLRequestMethod.POST;

function submit(e:MouseEvent):void
{
    if(contact_email.text=="")
    {
        message_status.text = "Molimo Vas unesite mail";
    }
    else if(!validate_email(contact_email.text))
    {
        message_status.text = "Molimo Vas unesite ispravan mail";
    }
    else
    {
        message_status.text = "Šalje se...";
        
        var email_data:String = "&email=" + contact_email.text
                       + "&subject=Prijava na newsletter"
                       + "&message=" + contact_email.text;
        var URL_vars:URLVariables = new URLVariables(email_data);
        URL_vars.dataFormat = URLLoaderDataFormat.TEXT;
        
        URL_request.data = URL_vars;
        var_load.load(URL_request);
        var_load.addEventListener(Event.COMPLETE, receive_response);
    }
}

function validate_email(s:String):Boolean
{
    var p:RegExp = /(\w|[_.\-])+@((\w|-)+\.)+\w{2,4}+/;
    var r:Object=p.exec(s);
    if(r == null)
    {
        return false;
    }
    return true;
}

function receive_response(e:Event):void
{
    var loader:URLLoader = URLLoader(e.target);
    var email_status = new URLVariables(loader.data).success;
    if (email_status == "yes")
    {
        message_status.text = "Vaša poruka je uspešno poslata.";
        timer = new Timer(500);
        timer.addEventListener(TimerEvent.TIMER, on_timer);
        timer.start();
    }
    else
    {
        message_status.text = "Došlo je do greške. Mail nije poslat.";
    }
}

function on_timer(te:TimerEvent):void{
    if(timer.currentCount >= 10)
    {
        contact_email.text = "";
        timer.removeEventListener(TimerEvent.TIMER, on_timer);
    }
}

 
Odgovor na temu

MenOfHonor
Bojan Mihajlović
Beograd

Član broj: 118521
Poruke: 266
*.3gnet.mts.telekom.rs.



+28 Profil

icon Re: Flash i php newsletter forma06.07.2011. u 23:34 - pre 155 meseci
Ovaj deo nije ispravan:
Code:
URL_vars.dataFormat = URLLoaderDataFormat.TEXT;

Prvo, URLVariables klasa nema svojstvo dataFormat, već ga ima URLLoader klasa. Drugo, konstanta URLLoaderDataFormat svojstva bi trebala da bude VARIABLES ako već želiš da učitaš promenljive. Znači "URL_vars" objekat očekuje promenljive u obliku "promenljiva=vrednost". Kada si napisao URLLoaderDataFormat.TEXT ti se "rekao" loaderu da ćeš učitati tekstualni fajl (što ne želiš), već hoćeš da učitaš promenljive iz fajla. Da ne dužim, ovako bi trebao da izgleda taj deo koda koji ti pravi problem:
Code:
var URL_vars:URLVariables = new URLVariables(email_data);
        var_load.dataFormat = URLLoaderDataFormat.VARIABLES;
        URL_request.data = URL_vars;
        var_load.load(URL_request);
        var_load.addEventListener(Event.COMPLETE, receive_response);

Pogledajte odličnu knjigu ActionScript 3.0: Visual QuickStart Guide na Safari Books Online unošenjem kupon koda TPJVJGA: https://ssl.safaribooksonline.com/safarienabled
Obavezno pogledati besplatan tutorijal "Installing Apache, MySQL, and PHP" na lynda.com: http://www.lynda.com/MySQL-5-t...che-mysql-and-php/77958-2.html
 
Odgovor na temu

Ivica Vujović
Ivica Vujović
Beograd

Član broj: 44727
Poruke: 127



+5 Profil

icon Re: Flash i php newsletter forma07.07.2011. u 14:43 - pre 155 meseci
Hvala na brzom odgovoru. Guglanjem sam i ja dosao do istog zakljucka. Problem je sto ne fercera ni to resenje. Negde sam napipao da Adobe ima bag u verziji flash-a od 10 pa na ovamo i da to VARIABLES ne prepoznaje vec ga cita kao variables pa zbog toga ni ne ume da ocita sta mu treba. Ima gomila ljudi kojima to ne radi kako treba i svi imaju neko random resenje problema?!

http://bugs.adobe.com/jira/browse/FP-1666

Iskreno, malo sam zbunjen posto nisam bas vican php-u i ne znam zasto flash ne ocitava te podatke.


Edit: Nasao sam interesantnu opservaciju na ovom linku. Ali jos nisam bas siguran kako da izmenim php skriptu.

[Ovu poruku je menjao Trbonja dana 07.07.2011. u 16:47 GMT+1]
 
Odgovor na temu

MenOfHonor
Bojan Mihajlović
Beograd

Član broj: 118521
Poruke: 266
*.3gnet.mts.telekom.rs.



+28 Profil

icon Re: Flash i php newsletter forma07.07.2011. u 15:39 - pre 155 meseci
Da, dosta ljudi se žali, ali uglavnom je problem u samom kodu. Sad sam video da ti prosleđuješ promenljivu "email_data" URLVariables objektu koja je u obliku "promenljiva=vrednost", međutim za razliku od AS2 u AS3 ispred naziva prve promenljive se ne stavlja ampersend (&) već samo naziv promenljive, a svaka naredna promenljiva se nadovezuje sa &. Dakle, promenljiva "email_data" bi trebala da sadrži sledeći string:
Code:
var email_data:String = "email=" + contact_email.text + "&subject=Prijava na newsletter" + "&message=" + contact_email.text;

Pogledajte odličnu knjigu ActionScript 3.0: Visual QuickStart Guide na Safari Books Online unošenjem kupon koda TPJVJGA: https://ssl.safaribooksonline.com/safarienabled
Obavezno pogledati besplatan tutorijal "Installing Apache, MySQL, and PHP" na lynda.com: http://www.lynda.com/MySQL-5-t...che-mysql-and-php/77958-2.html
 
Odgovor na temu

Ivica Vujović
Ivica Vujović
Beograd

Član broj: 44727
Poruke: 127



+5 Profil

icon Re: Flash i php newsletter forma07.07.2011. u 16:00 - pre 155 meseci
Bingo!. Svaka cast. Nisam ovo primetio. Sad vise nemam ovaj error. No ne lezi vraze, pojavljuje se novi:

Error #2044: Unhandled ioError:. text=Error #2032: Stream Error

Nisam se nadao ovakvim komplikacijama...
 
Odgovor na temu

MenOfHonor
Bojan Mihajlović
Beograd

Član broj: 118521
Poruke: 266
*.3gnet.mts.telekom.rs.



+28 Profil

icon Re: Flash i php newsletter forma07.07.2011. u 16:18 - pre 155 meseci
To znači da fajl nije učitan jer se verovatno ne nalazi na onoj lokaciji koja je navedena. Problem je verovatno ovde:
Code:
var URL_request:URLRequest = new URLRequest("send_email.php");

Da li si naveo ispravnu putanju do fajla "send_email.php"?
Pogledajte odličnu knjigu ActionScript 3.0: Visual QuickStart Guide na Safari Books Online unošenjem kupon koda TPJVJGA: https://ssl.safaribooksonline.com/safarienabled
Obavezno pogledati besplatan tutorijal "Installing Apache, MySQL, and PHP" na lynda.com: http://www.lynda.com/MySQL-5-t...che-mysql-and-php/77958-2.html
 
Odgovor na temu

Ivica Vujović
Ivica Vujović
Beograd

Član broj: 44727
Poruke: 127



+5 Profil

icon Re: Flash i php newsletter forma07.07.2011. u 17:37 - pre 155 meseci
Hm. PHP fajl je na istom mestu gde i swf fajl. Postavicu punu putanju kad stignem kuci.

Edit: Slucajno sam zakacio i obrisao karakter u imenu send_email.php.

Ok, u lokalu radi sve, sem slanja mailova, sto je normalno jer nemam php instaliran. Medjutim, kad probam u razlicitim browserima da pustim i da probam online ponovo mi iskace greska:

Code:
Error: Error #2101: The String passed to URLVariables.decode() must be a URL-encoded query string containing name/value pairs.
    at Error$/throwError()
    at flash.net::URLVariables/decode()
    at flash.net::URLVariables()
    at newsform_fla::MainTimeline/receive_response()
    at flash.events::EventDispatcher/dispatchEventFunction()
    at flash.events::EventDispatcher/dispatchEvent()
    at flash.net::URLLoader/onComplete()


Steta, taman sam se ponadao da ce da radi ok.

[Ovu poruku je menjao Trbonja dana 07.07.2011. u 21:04 GMT+1]
 
Odgovor na temu

Ivica Vujović
Ivica Vujović
Beograd

Član broj: 44727
Poruke: 127



+5 Profil

icon Re: Flash i php newsletter forma07.07.2011. u 21:59 - pre 155 meseci
Uspeo sam da ukapiram u cemu je stvar.

Problem je bio i u php kodu. Naime, promenljive email, subject i message saljem iz flash-a u php. Ali sam u php kodu izbrisao da ih preuzme iz flash-a misleci da ne moram da ih upisujem. Naravno, flash ocekuje da ih php preuzme ali se to ne desava jer mu nije receno da ceka to. Prepravka php koda je resila problem:

Code:
<?php
$contact_email = $_POST['email'];
$contact_subject = $_POST['subject'];
$contact_message = $_POST['message'];

if( $contact_name == true )
{
    $sender = $contact_email;
    $receiver = "[email protected]";
    $client_ip = $_SERVER['REMOTE_ADDR'];
    $email_body = "Email: $sender \n\nSubject: $contact_subject \n\nMessage: \n\n$contact_message \n\nIP: $client_ip \n\n";        
    $extra = "From: $sender\r\n" . "Reply-To: $sender \r\n" . "X-Mailer: PHP/" . phpversion();

    if( mail( $receiver, "$contact_subject", $email_body, $extra ) ) 
    {
        echo "success=yes";
    }
    else
    {
        echo "success=no";
    }
}
?>


@MenOfHonor: Zahvaljujem na pomoci. Nadam se da ce ljudima biti od koristi ova nasa prepiska.



[Ovu poruku je menjao Trbonja dana 08.07.2011. u 10:23 GMT+1]
 
Odgovor na temu

MenOfHonor
Bojan Mihajlović
Beograd

Član broj: 118521
Poruke: 266
*.3gnet.mts.telekom.rs.



+28 Profil

icon Re: Flash i php newsletter forma09.07.2011. u 13:15 - pre 155 meseci
Drago mi je da si uspeo da rešiš problem. Nekom će ovo svakako dobro doći.
Pogledajte odličnu knjigu ActionScript 3.0: Visual QuickStart Guide na Safari Books Online unošenjem kupon koda TPJVJGA: https://ssl.safaribooksonline.com/safarienabled
Obavezno pogledati besplatan tutorijal "Installing Apache, MySQL, and PHP" na lynda.com: http://www.lynda.com/MySQL-5-t...che-mysql-and-php/77958-2.html
 
Odgovor na temu

[es] :: Flash :: Flash i php newsletter forma

[ Pregleda: 1889 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.