Jump to content


Photo

Criando Um Sistema De Contato


  • Faça o login para participar
15 replies to this topic

#1 paes

paes

    GustavoPaes.Net

  • Usuários
  • 1393 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP
  • Interesses:Rumo ao topo!

Posted 31/05/2004, 16:35

Criando o formulário
Antes de tudo temos que criar o formulário onde o usuário irá colocar seu nome, email, o assunto e a mensagem. Esta página não utiliza nenhum comando PHP, somente códigos HTML. Veja:

<html>
<head>
<title>Formulário de contato</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head> <body>
<form action="enviar.php" method="post">
<table width="100%" border="0" cellspacing="2" cellpadding="2">
<tr> 
<td width="20%" align="right" height="20"><font size="2" face="Verdana">Seu nome:</font></td>
<td><font size="2" face="Verdana"> 
<input name="nome" type="text" id="nome">
</font></td>
</tr>
<tr> 
<td align="right" height="20"><font size="2" face="Verdana">Seu e-mail:</font></td>
<td><font size="2" face="Verdana">
<input name="email" type="text" id="email">
</font></td>
</tr>
<tr> 
<td align="right" height="20"><font size="2" face="Verdana">Assunto:</font></td>
<td>
<select name="assunto">
<option value="1">Dúvidas</option>
<option value="2">Sugestões</option>
<option value="3">Outros</option>
</select>
</td>
</tr>
<tr> 
<td align="right" height="20" valign="top"><font size="2" face="Verdana">Mensagem:</font></td>
<td><textarea name="mensagem"></textarea></td>
</tr>
<tr> 
<td align="right" height="20"><font size="2" face="Verdana">&nbsp;</font></td>
<td><font size="2" face="Verdana"> 
<input type="submit" name="Submit" value="Enviar">
</font></td>
</tr>
</table>
</form>
</body>
</html>

Criando a página enviar.php
Agora vamos criar o principal. A página que envia o e-mail com os dados do formulário para o e-mail do administrador, ou conforme o assunto. Exemplo, o usuário está com uma dúvida, o e-mail então será enviado para duvidas@seusite.com.br, caso o usuário tenha uma sugestão, será enviado para sugestao@seusite.com.br, e assim por diante. Vamos ao código:

PHP

<?
// setamos aqui um valor 'verdadeiro'
// para a variavel $verifica
$verifica = true;

// verifica se tem algum campo em branco
if($_POST[nome] == "" or $_POST[email] == "" or $_POST[mensagem] == ""){
$verifica = false;
$msg = "Erro: Todos os campos são obrigatórios.";
$url = "javascript:history.go(-1);";
}

// verifica se a mensagem tem mais de 1000 caracteres
// para evitar muitas besterias...
// voce pode mudar a quantidade, ou retirar esta
// verificação
if(strlen($_POST[mensagem] > 1000){
$verifica = false;
$msg = "Erro: Sua mensagem deve conter no máximo 1000 caracteres.";
$url = "javascript:history.go(-1);";
}

// se $verifica continuar TRUE
if($verifica){
// pega o e-mail pra enviar
if($_POST[assunto] == 1){
$email = "duvidas@seusite.com.br";
$assunto = "Dúvidas";
}
elseif(
$_POST[assunto] == 2){
$email = "sugestoes@seusite.com.br";
$assunto = "Sugestões";
}
elseif(
$_POST[assunto] == 3){
$email = "outros@seusite.com.br";
$assunto = "Outros";
}

// não permite códigos HTML
$mensagem = $_POST[mensagem];
$mensagem = str_replace("<", "<", $mensagem);
$mensagem = str_replace(">", ">", $mensagem);

$msg = "<font face='verdana' size=2>Nome: {$_POST[nome]}\n";
$msg .= "E-mail: {$_POST[email]}\n";
$msg .= "Mensagem:\n";
$msg .= $mensagem;
$msg .= "</font>";

$headers = "From: Contato\n";
$headers .= "Content-type: text/html";
// comando que envia o email
$enviar = mail($email, $assunto, $msg, $headers);

// se for bem sucedido
if($enviar){
$msg = "Sucesso: E-mail enviado com sucesso.";
$url = "index.php";
}
else{
// se houver erro
$msg = "Erro: Não foi possível enviar o e-mail.";
$url = "index.php";
}
}
?>
<script language="JavaScript">
alert("<?=$msg;?>");
window.location = "<?=$url;?>";
</script>


Comentando o código
O código é muito simples. Antes de tudo, damos um valor verdadeiro (true) à variável $verifica. Isso serve para que se não houver nenhuma "irregularidade" nas verificações, possa ser enviado o e-mail. Caso haja alguma "irregularidade", será dado um valor falso (false) à variável $verifica. Assim, o e-mail não será enviado, e uma mensagem de erro será exibida.

A primeira verificação confere se os campos Nome, E-mail e Mensagem foram preenchidos. Ou seja, não estão vazio. Caso um dos três esteja vazio, uma variável ($msg) será criada com uma mensagem de erro. Se estiverem todos preenchidos, nada será feito. Ou seja, a variável $verifica ainda continua verdadeira.

A segunda verificação consiste em checar o número de caracteres digitados na mensagem. Caso for maior que 1000 caracteres, uma variável ($msg) será criada com uma mensagem de erro. Isso serve para evitar que pessoas má intensionadas enviem e-mail muito grandes, gerando lag no servidor, e spam no seu e-mail.
Caso você deseje aumentar ou diminuir o número de caracteres, basta você modificar no número. Você também pode retirar este comando.

Passada as duas verificações (se $verifica ainda for igual à true) será enviado o e-mail. Mas antes de enviar a mensagem, vamos pegar o assunto que o usuário selecionou. Junto com o assunto pegaremos o e-mail para quem será enviado o contato. Exemplo, se o usuário escolheu o assunto Dúvidas, o contato será enviado para duvidas@seusite.com.br e assim por diante.

Depois de pego o e-mail para enviar o contato iremos editar a mensagem, evitando que seja enviado algum comando malicioso se utilizando ActiveX. Para isso, basta uma simples substituição dos < >para o &lt; e &gt;

Depois de tudo verificado e modificado está na hora de enviar a mensagem. Quem fará isso é o comando mail(), sendo o primeiro argumento ($email) o e-mail para quem será enviado o contato, o segundo ($assunto) o assunto da mensagem, o terceiro ($msg) a mensagem, e o quarto ($headers) os headers que permitirão que sejam utilizados comandos HTML.

Depois de enviado será exibida uma mensagem de sucesso ou de erro.

Pronto, você já tem seu sistema de contato. Você pode modificá-lo a vontade, sem restrições, e qualquer dúvida pode entrar em contato.

Final
Espero que tenha sido claro :lol: ;)

FLW
Site: GustavoPaes.net

^ Rumo ao Topo ^

#2 K-19

K-19

    Normal

  • Usuários
  • 91 posts
  • Sexo:Não informado
  • Localidade:Viseu
  • Interesses:bues deles

Posted 31/05/2004, 17:17

Esta porreiro seu tutorial.
www.Scripts.kom.pt - My WebPage

#3 Wiz

Wiz

    Novato no fórum

  • Usuários
  • 2 posts
  • Sexo:Não informado

Posted 11/03/2005, 13:21

Passada as duas verificações (se $verifica ainda for igual à true) será enviado o e-mail. Mas antes de enviar a mensagem, vamos pegar o assunto que o usuário selecionou. Junto com o assunto pegaremos o e-mail para quem será enviado o contato. Exemplo, se o usuário escolheu o assunto Dúvidas, o contato será enviado para duvidas@seusite.com.br e assim por diante.

Oi, não conseui incluir no código os campos Cidade e Estado o.O'' liga não sou iniciante demais nesse assunto, se puder me ajudar eu agradeceria muito

#4 Buthy

Buthy

    Normal

  • Usuários
  • 93 posts
  • Sexo:Masculino

Posted 08/04/2005, 12:55

mto bom seu tutorial kra

mas to com uma duvida toska aki

onde tem isso por exemplo:

else{ // se houver erro
$msg = "Erro: Não foi possível enviar o e-mail.";
$url = "index.php";
}


onde tem o $msg =
como eu faço pra mudar a fonte, tamanho dela, fundo, negrito, essas coisas

vlw

Edição feita por: Buthy, 08/04/2005, 12:55.


#5 Spider-man

Spider-man

    Doutor

  • Usuários
  • 987 posts
  • Sexo:Não informado

Posted 08/04/2005, 13:30

soh vc adicionar tags HTML

#6 Eric Andrade Ferreira

Eric Andrade Ferreira

    Novato no fórum

  • Usuários
  • 2 posts
  • Sexo:Não informado

Posted 13/02/2008, 17:54

Ola amigo...

Eu tive alguns certos problemas neste "Sistema de Contato"

EU fiz tudo como esta no tutorial criei uma pagina chamada "index.php" e inceri o primeiro Condigo ( que tem as barras para por a informações email , assunto , Mensagem e etc )

e depoiis criei outra pagina com o nome "enviar.php" e coloquei o Segundo condigo citado !

e depois configurei os emails o qual serão enviados e depois fiz o teste na "Internet Explorer".

Assim que que informei o os requisitos necessarios, e puz em enviar, ocorreu este seguinte Erro:

Parse error: parse error in c:\appserv\www\enviar.php on line 25


Que seria nesta Seguinte área:

// verifica se a mensagem tem mais de 1000 caracteres
// para evitar muitas besterias...
// voce pode mudar a quantidade, ou retirar esta
// verificação

if(strlen($_POST[mensagem] > 1000){
$verifica = false;
$msg = "Erro: Sua mensagem pode conter no máximo 1000 caracteres.";
$url = "java script:history.go(-1);";
}


Caso venha à dúvida, eu uso o AppServ!
E se puder me ajudar ficarei EXTREMAMENTE Grato! :lol:

Muito Obrigado ( MSN: ericandradegt@hotmail.com )

#7 tury

tury

    Novato no fórum

  • Usuários
  • 18 posts
  • Sexo:Não informado

Posted 13/02/2008, 18:07

oh erick mesma coisa aki comigo eu vi la ta ate escrito false eu botei true mais n mudou mesmo errou continuo afff


Alguem ajuda nois

#8 Jola

Jola

    Turista

  • Usuários
  • 49 posts
  • Sexo:Masculino

Posted 12/10/2008, 13:01

Ola amigo...

Eu tive alguns certos problemas neste "Sistema de Contato"

EU fiz tudo como esta no tutorial criei uma pagina chamada "index.php" e inceri o primeiro Condigo ( que tem as barras para por a informações email , assunto , Mensagem e etc )

e depoiis criei outra pagina com o nome "enviar.php" e coloquei o Segundo condigo citado !

e depois configurei os emails o qual serão enviados e depois fiz o teste na "Internet Explorer".

Assim que que informei o os requisitos necessarios, e puz em enviar, ocorreu este seguinte Erro:

Parse error: parse error in c:\appserv\www\enviar.php on line 25


Que seria nesta Seguinte área:

// verifica se a mensagem tem mais de 1000 caracteres
// para evitar muitas besterias...
// voce pode mudar a quantidade, ou retirar esta
// verificação

if(strlen($_POST[mensagem] > 1000){
$verifica = false;
$msg = "Erro: Sua mensagem pode conter no máximo 1000 caracteres.";
$url = "java script:history.go(-1);";
}


Caso venha à dúvida, eu uso o AppServ!
E se puder me ajudar ficarei EXTREMAMENTE Grato! :lol:

Muito Obrigado ( MSN: ericandradegt@hotmail.com )



Estou tendo exatamento o mesmo problema, se alguma alma pudesse nos ajudar, eu agradeceria....

Att.

#9 Alex Hiroshi

Alex Hiroshi

    Super Veterano

  • Ex-Admins
  • 4923 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP

Posted 12/10/2008, 13:08

if(strlen($_POST['mensagem']) > 1000){


Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Ex-Administrador

#10 Jola

Jola

    Turista

  • Usuários
  • 49 posts
  • Sexo:Masculino

Posted 12/10/2008, 13:40

if(strlen($_POST['mensagem']) > 1000){


Alex,

Resolveu o problema, obrigado, era isso mesmo, mas agora apareceu outro... veja só

Warning: mail() [function.mail]: Safety Restriction in effect. The mail() command is not allowed, contact the admin. in /www/110mb.com/t/e/s/t/s/i/t/e/testesite20/htdocs/contato/enviar.php on line 59


Linha 59 é essa "$enviar = mail($email, $assunto, $msg, $headers);"

Será que o servidor gratuito não aceita o envio de formmails? :huh:


Valeu, abraaço!

#11 Alex Hiroshi

Alex Hiroshi

    Super Veterano

  • Ex-Admins
  • 4923 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP

Posted 12/10/2008, 22:52

Isso. A maioria (não vou falar todos porque não sei, mas é provável que seja) não permite o envio de e-mails.
Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Ex-Administrador

#12 Maykel Esser

Maykel Esser

    Super Veterano

  • Usuários
  • 1536 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 13/10/2008, 16:00

Tente usar a classe PHPMailer, já que a função nativa de e-mails não é suportada pelos servidores :P

Se este post lhe ajudou, ajude o fórum também. Use a reputação de mensagens! add.png


#13 buddyweb

buddyweb

    Novato no fórum

  • Usuários
  • 2 posts
  • Sexo:Não informado

Posted 03/11/2008, 12:29

salvou minha vida esse seu tuto....gyaaggahuahuahuauhuhaha

#14 Bruno Melo - PHP

Bruno Melo - PHP

    Novato no fórum

  • Usuários
  • 9 posts
  • Sexo:Masculino

Posted 19/11/2008, 18:36

otimo tutorial !

contato : generation.web@hotmail.com

#15 Jola

Jola

    Turista

  • Usuários
  • 49 posts
  • Sexo:Masculino

Posted 26/02/2009, 10:37

Obrigado galera, to respondendo só agora, é que eu estou colocando no outro site... mas deu certo em 2008...

Excelente tutorial e obrigado Alex Hiroshi..

falou!




2 user(s) are reading this topic

0 membro(s), 2 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq