..:: MX Studio Fóruns ::..: Novo artigo no Portal - ..:: MX Studio Fóruns ::..

Jump to content

Publicidade




Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Novo artigo no Portal Formulário E-mail Flash+PHP

#1 User is offline   Natan 

  • Group: Moderador Global
  • Posts: 7350
  • Joined: 28-February 04

Posted 01 May 2008 - 11:27 PM

Olá pessoal.

Acabei de publicar um novo tutorial no portal do MXStudio. Dessa vez mostro como enviar um E-mail usando Flash e PHP, usando Componentes como ComboBox, CheckBox e RadioButton.

http://www.mxstudio.com.br/flash/formulario-e-mail-flashphp/

Qualquer dúvida postem aqui.

[]s
0

#2 User is offline   JUNIORTRIALS 

  • Group: Membros
  • Posts: 126
  • Joined: 23-February 05

  Posted 02 May 2008 - 07:49 PM

ae Natan blss parabéns pelo Tutorial muito bom, eu adicionei ao exemplo do ActionScript3 algumas StrHelper para manipular Strings e utilizei um RegExp (expressão regular) que foi adicionado ao AS3 para auxiliar as validações, a baixo estão as 2 Classes com métodos estáticos ValidaEmail.
E StrHelper que eu adaptei apartir de um exemplo do F1 do Flash.

CÓDIGO
package {
    public class ValidaEmail{
    //construtor padrão vazio
    public function ValidaEmail(){
    }
        // constante com a Expressão regular para validar e-mail
        public static const REGEX_EMAIL:RegExp = /^[a-z0-9]+([\._-][a-z0-9]+)*@[a-z0-9_-]+(\.[a-z0-9]+){0,4}\.[a-z0-9]{2,4}$/i;
        /*
            método estático validar recebe a String e verifica se é um e-mail valido
            recebe uma String
            retorna um Boolean (true ou false)
        */
        public static function validar(_email:String):Boolean{
            return REGEX_EMAIL.test(_email);
        }
    }
}


CÓDIGO
package {
    public class StrHelper {
        //construtor padrão vazio
        public function StrHelper() {
           }
        /*
            método estático toUpper passa a palavra para caracteres maiusculos
            recebe uma String
            retorna uma String
        */
        public static function toUpper(str:String):String {
            return str.toUpperCase();
        }
        /*
            método estático toLower passa a palavra para caracteres minusculos
            recebe uma String
            retorna uma String
        */
        public static function toLower(str:String):String {
            return str.toLowerCase();
        }
        /*
            método estático replace recebe a palavra atual a palavra a ser trocada e a palavra de substituição
            recebe 3 parametros do tipo String
            retorna uma String
        */
        public static function replace(str:String, oldSubStr:String, newSubStr:String):String {
            return str.split(oldSubStr).join(newSubStr);
        }
        /*
            método estático trim recebe a palavra atual e o caracter a ser removido do inicio e do fim da palavra
            recebe 2 parametros do tipo String
            retorna uma String
        */
        public static function trim(str:String, char:String):String {
            return trimBack(trimFront(str,char),char);
        }
        /*
            método estático trimFront recebe a palavra atual e o caracter a ser removido do inicio da palavra
            recebe 2 parametros do tipo String
            retorna uma String
        */
        public static function trimFront(str:String, char:String):String {
            char = stringToCharacter(char);
            if (str.charAt(0) == char) {
                str = trimFront(str.substring(1), char);
            }
            return str;
        }
        /*
            método estático trimBack recebe a palavra atual e o caracter a ser removido do fim da palavra
            recebe 2 parametros do tipo String
            retorna uma String
        */
        public static function trimBack(str:String, char:String):String {
            char = stringToCharacter(char);
            if (str.charAt(str.length - 1) == char) {
                str = trimBack(str.substring(0, str.length - 1), char);
            }
            return str;
        }
        //método estático stringToCharacter utilizado nos métodos trimBack e trimFront
        public static function stringToCharacter(str:String):String {
            if (str.length == 1) {
                return str;
            }
            return str.slice(0,1);
        }

    }
}


estes são os exemplos do uso dos métodos das 2 Classes acima

CÓDIGO
//importando as Classes ValidaEmail e StrHelper do mesmo diretório do .fla
import ValidaEmail;
import StrHelper;
// retorna os seguintes resultados
// true
trace(ValidaEmail.validar("pessoa@blabla.com.br"));
// false
trace(ValidaEmail.validar("@blabla.com.br"));
// false
trace(ValidaEmail.validar("pessoa@blabla"));
// false
trace(ValidaEmail.validar("pessoa#fulano@blabla.com.br"));
// retorna a String em minusculo
trace(StrHelper.toLower("pessoa#fulAAAno@blabla.com.br"));
// retorna a String em maiusculo
trace(StrHelper.toUpper("pessoa#fulAAAno@blabla.com.br"));
// retorna a String com a substituição do caracter @ pela palavra **ARROBA**
trace(StrHelper.replace("pessoa#fulAAAno@blabla.com.br","@","**ARROBA**"));
// retorna a String com "  pessoa#fulAAAno@blabla.com.br   " sem os espaços em branco do inicio e do fim da palavra
trace(StrHelper.trim("   pessoa#fulAAAno@blabla.com.br   "," "));
// retorna a String com "  pessoa#fulAAAno@blabla.com.br   " sem os espaços em branco do inicio da palavra
trace(StrHelper.trimFront("   pessoa#fulAAAno@blabla.com.br   "," "));
// retorna a String com "  pessoa#fulAAAno@blabla.com.br   " sem os espaços em branco do fim da palavra
trace(StrHelper.trimBack("   pessoa#fulAAAno@blabla.com.br   "," "));


Isso facilita muito a nossa vida com a manipulação de Strings e validação de Email

Valew thumbup.gif
0

#3 User is offline   Natan 

  • Group: Moderador Global
  • Posts: 7350
  • Joined: 28-February 04

Posted 03 May 2008 - 01:53 PM

Legal o que você fez Junior, desconhecia essa função RegExp, vou estuda-la para usar em meus arquivos. Sem dúvidas é uma grande dica aos usuários.

[]s
0

#4 User is offline   zebrata 

  • Group: Membros
  • Posts: 4
  • Joined: 24-September 08

Posted 30 September 2008 - 04:52 PM

QUOTE(Natan @ 1/5/2008 22:05:44) <{POST_SNAPBACK}>
Olá pessoal.

Acabei de publicar um novo tutorial no portal do MXStudio. Dessa vez mostro como enviar um E-mail usando Flash e PHP, usando Componentes como ComboBox, CheckBox e RadioButton.

http://www.mxstudio.com.br/flash/formulario-e-mail-flashphp/

Qualquer dúvida postem aqui.

[]s


0

#5 User is offline   zebrata 

  • Group: Membros
  • Posts: 4
  • Joined: 24-September 08

Posted 30 September 2008 - 05:07 PM

Oi Natan, sou novo aqui - ainda estou um pouco atrapalhado.

Estou com uma dúvida em relação ao "formulario-e-mail-flashphp"

Criei os campos nome, email e mensagem para o usuário preencher e deixei um CheckBox (com a posição selected=true) como opção para o usuário optar ou não por "sim, receber newsletter". Criei os botões enviar e limpar, tudo isso em ActionScript3.0, conforme o tutorial, muito bom... Mas o Flash está acusando um erro:

1120: Access of undefined property event.

na linha:


var resultado:URLVariables = new URLVariables(event.currentTarget.data)



poderia me ajudar?


0

#6 User is offline   Natan 

  • Group: Moderador Global
  • Posts: 7350
  • Joined: 28-February 04

Posted 05 October 2008 - 07:58 PM

Zebrata, esse erro é meio estranho, você está usando a versão 3.0 do ActionScript em seu arquivo?

Qualquer coisa pode me mandar um E-mail com seu arquivo que eu vejo o que pode estar errado, meu E-mail está no final do tutorial.

[]s
0

#7 User is offline   ThiagoP 

  • Group: Membros
  • Posts: 8
  • Joined: 12-December 08

Posted 12 December 2008 - 02:37 AM

oi sou novo aqui
fiz o seu tutorial e tudo certinho (depois de corrigir as "") rolleyes.gif

mas sempre que envio fica dizendo o erro de enviar o e-mail... mas o -email chegou no destino....


é possivel ir buscar os checkboxes a frame anterior? Ex. frame1 tem as checkboxes e a frame 2 o campo nome, email, os combo e botao envia???

para enviar data de um datefield, funciona como os combo? ou tenho mesmo de usar .selectedDate?

cara o as3 da uma porrada de erros

valeu thumbup.gif
0

#8 User is offline   Natan 

  • Group: Moderador Global
  • Posts: 7350
  • Joined: 28-February 04

Posted 12 December 2008 - 07:12 PM

Os problemas com as aspas duplas eu não sei porque acontece, já cansei de editar o tutorial e toda hora o problema volta a aparecer.

Quanto a suas dúdidas, se o E-mail chega a ser enviado, o Flash não está conseguindo acessar a mensagem de ok vinda do PHP e por isso exibe erro. O que você pode fazer é testar localmente no Flash e usar o comando trace dentro da função onLoad da Classe LoadVars (se tiver usando AS2) ou na função onLoadRecebe(se tiver usando AS3).

Sobre receber algum valor de CheckBox em outro frame, eu testei aqui e não consegui, porque você precisa verificar se ele foi selecionado ou não. Sobre o DateField, para retornar a data selecionada, você usa:

CÓDIGO
datefield.selectedDate


Onde datefield é a instancia do Componente.

[]s
0

#9 User is offline   ThiagoP 

  • Group: Membros
  • Posts: 8
  • Joined: 12-December 08

Posted 12 December 2008 - 11:38 PM

nao consigo... sad.gif

se adiciono mais valores, para alem dos 5 do Natan o php nao envia o email


coloquei mais um input igual ao nome para colocarem a data

fiz igual ao resto para enviar para php
(so o teu php funciona)

coloquei jundo dos outros

envia.dia = dia_txt.text;

no php ficou assim e agora nao envia nada
CÓDIGO
<?php
   /* Valores enviados pelo Flash */
   /* Para esse tutorial irei enviar 5 valores */
   /* Fiquem livres a enviar quantos valores quiserem */
   $nome = utf8_decode(@$_POST['nome']);
   $email = utf8_decode(@$_POST['email']);
   $dia = utf8_decode(@$_POST['dia']);
   $cidade = utf8_decode(@$_POST['cidade']);
   $assunto = utf8_decode(@$_POST['assunto']);
   $mensagem = utf8_decode(@$_POST['mensagem']);
   $news = utf8_decode(@$_POST['news']);
   $programas = utf8_decode(@$_POST['programas']);
   /* Coloquem seu E-mail aqui */
   $para = "rui_marinho@hotmail.com";
   /* Aqui uma pequena verificação para evitar que enviem E-mails sem valores */
   if ($nome != "" && $email != "" && $dia != "" && $cidade != "" && $assunto != "" && $mensagem != "") {
      /* Montamos o E-mail */
      /* Criei um exemplo bem simples de E-mail usando HTML */
      /* Fiquem livres para modificar conforme desejam */
      $corpo = '<html><head><title>'.$assunto.'</title></head><body>';
      $corpo .= 'Nome: '.$nome.'<br />E-mai: '.$email.'<br />Quer receber a Newsletter: '.$news.'<br />';
      $corpo .= 'Programas usados: '.$programas.'<br />';
      $corpo .= 'Cidade: '.$cidade.'<br />Assunto: '.$assunto.'<br />Dia: '.$dia.'<br />Mensagem: '.$mensagem;
      /* Aqui modificamos o tipo de E-mail para o formato HTML */
      $headers = 'MIME-Version: 1.0' . "\r\n";
      $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
      /* Aqui mudamos o cabeçalho para exibir o E-mail de quem enviou */
      $headers .= 'From:'. $email . "\r\n";
      /* Por fim enviamos o E-mail com os dados recebidos do Flash */
      $OK = mail($para, $assunto, $corpo, $headers);
      /* Retornamos um Ok para o Flash */
if ($OK)
{
    echo 'sent=OK';
}
else
{
    echo 'sent=failed';
}
?>

0

#10 User is offline   ThiagoP 

  • Group: Membros
  • Posts: 8
  • Joined: 12-December 08

Posted 13 December 2008 - 01:00 PM

consegui colocar a enviar o email mas no novo campo aparece undefined...


mas no flash ta tudo bem... as instancias tao correctas e envia.dia = dia_txt.text

nao percebo


0

#11 User is offline   Natan 

  • Group: Moderador Global
  • Posts: 7350
  • Joined: 28-February 04

Posted 14 December 2008 - 10:23 PM

O problema é que você modificou o PHP, por isso aparece a mensagem undefined. No Flash, localize a linha se usar ActionScript 2:

CÓDIGO
if (this.erro == 0) {


Ou essa linha se for em ActionScript 3:

CÓDIGO
if (resultado.erro == 0) {


Troque elas por essa no AS2:

CÓDIGO
if (this.sent == 0) {


Ou essa por AS3:

CÓDIGO
if (resultado.sent == 0) {


Com isso deve resolver.

[]s
0

#12 User is offline   ThiagoP 

  • Group: Membros
  • Posts: 8
  • Joined: 12-December 08

Posted 15 December 2008 - 07:28 AM

ja consegui colocar o nomo campo a funcionar... (a alteração para if (this.sent == 0) { nao fez nada)

a mensagem de erro continua ao enviar...
0

#13 User is offline   Natan 

  • Group: Moderador Global
  • Posts: 7350
  • Joined: 28-February 04

Posted 16 December 2008 - 07:33 PM

Faz assim, antes do if (this.sent == 0), coloque:

CÓDIGO
trace(this.sent);
trace(this);


Teste isso no Flash e veja o que aparece no painel Output.

[]s
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic



Publicidade




1 User(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)