[Duvida]Email Form

Started by Morenito, January 16, 2008, 10:10:00 PM

Previous topic - Next topic

Morenito

Boas

Criei no FrontPage uma form para ser um inquerito e agora keria colocar a pagina online para depois receber as respostas por mail. A duvida e:

1- Quando as pessoas carregarem no Submit, como mandar as respostas logo para o mail sem ir pelo mailto? Como configurar a form (qual o melhor codigo a utilizar)? Em que formato tem de ser guardada a pagina? Todos os servers host dao para este serviço (os da sapo por exemplo) ou existem servidores especificos para isto (se houver gostava que me indicassem um para hostar a pagina)?

Bem pode ser uma duvida longa mas e importante. Fico agradecido a kem me souber responder a isto...

Obrigado

PS: Tirei-me esta duvida como se eu fosse mt burro   Tentem explicar o melhor possivel!

cgoncalves

QuoteQuando as pessoas carregarem no Submit, como mandar as respostas logo para o mail sem ir pelo mailto?

Existe usando um formulário de envio php

QuoteComo configurar a form (qual o melhor codigo a utilizar)?

Vê o exemplo abaixo.

QuoteEm que formato tem de ser guardada a pagina?

Uma no formato hmtl ou htm e a outra em php

QuoteTodos os servers host dao para este serviço (os da sapo por exemplo) ou existem servidores especificos para isto (se houver gostava que me indicassem um para hostar a pagina)?

Todos os que possuam php sim.

Existem diversos hosts free que suportam é só usar o google.

exemplo para o que pretendes:

contacto.html


Contacto





Nome:

E-mail:

Assunto:

Mensagem






envia.php


$nome  = $_POST["nome"];

$email = $_POST["email"];

$assunto   = $_POST["assunto"];

$mensagem  = $_POST["mensagem"];





global $email;



$data  = date("d/m/y");

$ip = $_SERVER[\\'REMOTE_ADDR\\'];  

$navegador = $_SERVER[\\'HTTP_USER_AGENT\\'];

$hora  = date("H:i");  





$envia = mail ("EMAIL QUE PRETENDES RECEBER",  

$assunto",

 

"Nome: $nomennData: $datannIp: $ipnnNavegador: $navegadornnHora: $hora nnDomínio: $dominio nnMensagem: $mensagem",

 "From: $email"

);



if ($envia) {

echo "mENSAGEM ENVIADA COM SUCESSO";

}

else {

echo "Ocorreu um erro ao tentar enviar o e-mail, por favor tente novamente";

}





$site   = "TEU EMAIL"; //AUTO RESPOSTA

$titulo = "Auto-Resposta OBRIGADO PELO CONTACTO";



$msg = "O SEU EMAIL FOI RECEBIDO



OBRIGADO";





mail("$email",

"$titulo",

"$msg",

"From: $site"

);



?>

ilovehentai

Oi para além do que escreveu o Devil_Boy que aproveito e peço para confirmar o exemplo que deu que parece conter alguns erros, devo acrescentar o seguinte:

Se usas o FrontPage, existe uma extensão (FrontPage Server Extension) que te permite criar um formulário para enviar e-mail, já não vejo o FrontPage a minha frente à pelo menos 3 anos, sei que estava no menu onde podias criar motores de busca ou contadores de visitas. Ou seja no FrontPage tens lá essa opção para fazer "on the fly" esse formuláriozito de e-mail.

Para usá-lo é necessário teres um servidor com as tais FrontPage Server Extensions, por exemplo : http://www.tripod.lycos.com, pesquisa no google que de certeza vais encontrar montes.

Sugestões:

O FrontPage, mesmo para quem aprende já caducou, foi substituido pela microsoft pelo Expression Web podes saber mais aqui
http://www.microsoft.com/Expression/default.aspx

Aconselho vivamente a considerares mudar de IDE (integrated development environment). Se mantiveres a plataforma Microsoft, também poderas usar o Web Development Express, contudo a nível de programação irás ficar dependente da plataforma Windows.

Posso também te sugerir caso prefiras avançar com PHP, ou seja seguir a filosofia já apresentada pelo Devil_Boy, como tal, tens um ficheiro php com o layout da página e outro com o código PHP, poderás encontrar IDE con Intellinsense de PHP, como o Dreamweaver ou o Aptana (entre muitos outros).

Exemplo PHP (Atenção é necessário ter um servidor com a plataforma PHP instalada, no caso do Sapo não será possível executar código PHP)












Nome:


E-mail de contacto:


Assunto:


Mensagem:









Temos um formulário que quando premimos o botao "Enviar" ele irá executar pelo método de Post o ficheiro email.php, enviando os dados dos campos nome; email; assunto; mensagem; para ele.

De seguinda então temos o código contido no ficheiro email.php







/*quando iniciamos um código PHP é necessário iniciar com a tag



inciamos com esta condicional uma verificação, primeiro confirmamos que o formulário enviou pelo método Post o conteúdo do campo input envio, assim pela função isset() verifica-se a sua existência, o PHP aloja num array especial denominado de super global todo o conteúdo que foi preenchido nos campos do formulário esta super global é o array [b]$_POST[/b], de forma então a aceder aos conteúdos de cada campo este array fica com índices iguais aos nomes dos campos, assim se queremos aceder ao conteudo do campo nome acedemos assim $_POST[\\'nome\\']; se queremos os conteudos do campo mensagem seria $_POST[\\'mensagem\\']. Nesta condição verificamos então incialmente se o campo envio tinha sido submetido pelo formulário, depois dessa verificação iremos então confirmar se o seu conteúdo é o valor "ok", este valor é predefinido por nós na tag input do formulário. Se ambas condições forem verdadeiras então o nosso código irá começar a processar o e-mail, se alguma for errada, simplesmente o código será ignorado, não será criado nenhum e-mail



Nota: o símbolo && significa "e" ou do inglês "AND", e o símbolo == significa "verificamos igual a" */



//Pseudo-código da linha :



//Se o input envio tiver sido submetido e o input envio tiver um valor igual a ok então:



if((isset($_POST[\\'envio\\'])) && ($_POST[\\'envio\\'] == "ok")){



/* imaginemos agora que todos os campos submetidos teriam que ser de preenchimento obrigatório então temos que confirmar se todos os índices do array $_POST são diferentes de nada, podemos dizer que nada em PHP pode ser representado por duas aspas vazias, assim: " [b]""[/b] ", para isso iremos executar um ciclo, este irá passar por todos os índices do array e irá confirmar que nenhum seja igual a "" */



$validacao = True;



foreach($_POST as $conteudo){



 if($conteudo == ""){

$validacao = False;

break;



}



/*ou seja aqui vemos o seguinte, por cada índice do array $_POST colocá-mo-lo temporariamente numa  variável e verificamos a variável, se ela for igual a nada então a validação é negativa e o ciclo é imediatamente quebrado (parado), não vale a pena continuar a verificação se pelo menos um campo não foi preenchido, contudo se todos os campos estiverem preenchidos, como declaramos incialmente que a validação era verdadeira, então ela mantem-se verdadeira e tudo está nos conformes.



ok agora que sabemos que o form foi correctamente submetido iremos colocar em variáveis os valores recebidos, uma variável é um espaço de memória reservada no sistema que contém um valor definido pelo sistema, em PHP as variáveis contêm o símbolo cifrão no início, e podem conter carácteres alfanuméricos, mas nunca comecem por um valor numérico, assim temos:



Se a validação é verdadeira, se queríamos saber se a validação é falsa, basta usar o caracter de negação " ! " e assim teríamos o seguinte if(!$validacao) ou seja a negação de verdadeiro é falso */



if($validacao){



 $email_envio = "meumail@klk.com"; //trata-se do nosso e-mail para onde são enviadas as mensagens



 $nome = $_POST[\\'nome\\'];

 $email_contacto = $_POST[\\'email\\'];

 $assunto = $_POST[\\'assunto];

 $mensagem = $_POST[\\'mensagem\\'];



//Podemos criar um header simples que indica que o mail foi enviado do nosso site,

// e para quem responder ou seja o email de contacto deixado pelo utilizador no form



 $headers = "From: O meu site" . "rn" . "Reply-To: $email_contacto" . "rn";



/* É importante perceber na sintaxe do PHP que cada linha de código tem que ser fechada pelo símbolo "; " assim o PHP entende quando um linha termina e quando outra começa, cada passo tem que ser dado por concluido, por exemplo não podemos declarar duas variáveis na mesma linha, temos que concluir quando declaramos a 1Ã,ª para declaramos a segunda.



por fim podemos usar a função mail() que recebe neste caso 4 atributos, uma função é um pedaço de código definido, que executa como um método, algumas funções recebem atributos, outras não necessitam, podemos nós também criar funções, por exemplo: */



// function olaMundo(){ $olamundo = "Hello World"; return print($olamundo); }



/*neste caso temos uma função muito simples, que não recebe qualquer atributo, os atributos são sempre colocados entre as aspas das funções, sempre que chamarmos essa função ela irá retornar escrito na página Hello World.*/



//voltando a função mail(), iremos colocar 4 atributos, 1Ã,º para quem o email;

// 2Ã,º o assunto; 3Ã,º mensagem e por fim o nosso header





 $envio = mail($email_envio, $assunto, $mensagem, $headers);



/*repara como coloquei a função mail() numa variável, isso acontece porque a função mail() retorna algo ela retorna um valor booleano ou seja verdadeiro ou falso, se ela tiver sido correctamente enviada o valor é verdadeiro, senão é falso, assim podemos saber se tudo aconteceu normalmente. verificamos assim:*/



 if($envio){

$aviso = "Mensagem enviada com sucesso!";

 }else{

$aviso = "Não foi possível enviar a mensagem de momento, tente mais tarde!";

 }



}else{

 

  // caso a validação tenha sido falsa então colocávamos

  // em memória o erro a imprimir

  $aviso = "Todos os campos são de preenchimento obrigatório";

 

}

 

}



?>

E prontos, de seguida apenas falta acrescentar na página da form a declaração da variável $aviso e colocar a variável $aviso no sítio onde os avisos irão surgir, também podemos colocar caso os campos foram submetidos mas ocorreu um erro, imprimir na mesma nos value dos inputs o que já tinha sido escrito, assim a cada submit do utilizador não ter de reescrever tudo, a form fica assim:







// declaramos fora do html que o aviso é igual a nada

$aviso = "";



?>





formulário de email















Nome: />


E-mail de contacto: />


Assunto: />


Mensagem:

















E prontos, tentei-te explicar caso queiras seguir com um exemplo de PHP para além de usares o exemplo do tipo copy past, poderes perceber um pouco de PHP, como este código funciona e para que serve cada elemento do código. Espero que tenhas gostado da leitura lol eu sei que é pesado, mas acredita que escrever isto tudo também o é  :wink:

Cumps a todos  8)

Morenito

obrigado aos 2

Muito bom tutorial!

Morenito

e ja agora outra duvida (k n tem mt a ver mas era para n abrir outro topico)...
tenho o FreshFTP para sincronizar os ficheiros entre o pc e o site. Para fazr download dos ficheiros do site po pc é na boa... mas kd kero fazr upload dos ficheiros po site, fica algum tempo a processar mas depois da erro.
Sera do servidor (sapo) ou o programa n pode ser client?