Ir para conteúdo
Fórum Script Brasil
  • 0

Problema com script para enviar dados de um formulario


Rogério Yokoi

Pergunta

Olá a todos, boa tarde.

Sou iniciante em programação PHP, e atualmente estou desenvolvendo um site particular.

O que acontece é o seguinte estou tentando configurar a parte de enviar do formulario, para melhor me atender ao que preciso, e com isso fui criando, lendo várias coisas sobre o assunto e acho q em determinados pontos eu me perdi completamente o que ocasionou do script não funcionar nada, certo ou errado ele retorna tudo como errado, assim como uma auto-resposta que também não é enviada corretamente, básicamete nada funciona....

enfim vou postar aqui os códigos que estou utilizando, e gostaria que alguém pudesse me ajudar, me mostrando onde estou errando e o que poderia fazer para melhorar...Grato...

Arquivo ENVIAR.PHP

<?
/*
Script criado por:
Rogério Oliveira Yokoi
http://www.rogerioyokoi.com
*/

//Define o dia e hora em que a mensagem foi enviada
$data = date("d/m/Y h:i");

//Recebe os dados vindos do formulário para envia-los
$nome = $_POST["nome"];
$empresa = $_POST["empresa"];
$email = $_POST["email"];
$cidade = $_POST ["cidade"];
$assunto = $_POST ["assunto"];
$mensagem = $_POST ["mensagem"];

//Nesta parte será feita a verificação dos dados e se corretos envia-los ou retornar erro no preenchimento
//Assume-se com essa parte a delimitação minima de caracteres para cada campo

//Verifica o campo nome
if(strlen($nome)<3) //Verifica se o campo nome contém menos de 3 caracteres
echo "&lt;script> window.alert('O campo NOME deve ser preenchido ou conter no minimo 3 caracteres!');</script>";//SE TIVER MENOS DE 5 CARACTERES ELE RETORNA A MENSAGEM DE ERRO

//Verifica o campo empresa
if(strlen($empresa)<3) 
echo "&lt;script> window.alert('O campo EMPRESA deve ser preenchido ou conter no minimo 3 caracteres!');</script>";

//Verifica o campo e-mail
if (substr_count($email,"@") == 0 || substr_count($email,".") == 0) //Condição para o campo email que deve existir o "@" e "."
echo "&lt;script> window.alert('Verifique seu E-MAIL pode ter sido digitado incorretamente!');</script>";

//Verifica o campo cidade
if(strlen($cidade)<3) 
echo "&lt;script> window.alert('O campo CIDADE deve ser preenchido ou conter no minimo 3 caracteres!');</script>";

//Verifica o campo assunto
if(strlen($assunto)<3) 
echo "&lt;script> window.alert('O campo NOME deve ser preenchido ou conter no minimo 3 caracteres!');</script>";

//Verifica o campo empresa
if(strlen($mensagem)>20) || (strlen($mensagem)>500)
echo "&lt;script> window.alert('O campo de MENSAGEM não deve conter menos de 20 ou mais de 500 caracteres!');</script>";


//Cabeçalho - Aqui contém os dados do site e o e-mail que recebe a mensagem e para onde redireciona no caso de sucesso
$nome_do_site="Rogério O. Yokoi";
$email_para_onde_vai_a_mensagem = "contato@rogerioyokoi.com";
$nome_de_quem_recebe_a_mensagem = "Rogério O. Yokoi";
$exibir_apos_enviar='http://www.rogerioyokoi.com';

//Configurações da mensagem original
$cabecalho_da_mensagem_original="From: $name <$email>\n";
$assunto_da_mensagem_original="Contato no Site";

//Aqui configura a forma de recebimento do e-mail
$configuracao_da_mensagem_original="

ENVIADO POR:\n
Nome: $nome\n
Empresa: $empresa\n
Email: $email\n
Cidade: $cidade\n
Assunto: $assunto\n
Mensagem: $mensagem\n
ENVIADO EM: $date

";
/* Para enviar email HTML, você precisa definir o header Content-type. */
$headers  = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

//CONFIGURAÇÕES DA MENSAGEM DE RESPOSTA
// CASO $assunto_digitado_pelo_usuario="s" ESSA VARIAVEL RECEBERA AUTOMATICAMENTE A CONFIGURACAO
// "Re: $assunto"
$assunto_da_mensagem_de_resposta = "Confirmação";
$cabecalho_da_mensagem_de_resposta = "From: $nome_do_site < $email_para_onde_vai_a_mensagem>\n";
$configuracao_da_mensagem_de_resposta="
$headers
<head>
<title> $nome_site </title>
<link href="http://www.rogerioyokoi.com/auto-resposta/estilo.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="container">
    <div id="corpo">
        <img src="http://www.rogerioyokoi.com/auto-resposta/imagens/topo.png" alt="" />
        <div id="texto">
        <p>Caro <?php echo $nome ?>,</p>
        <p>Agradeço sua mensagem de contato e o mais breve possivel estará sendo respondida a você!</p>
        <p><?php echo $date ?></p>
        <p> Segue abaixo o contato enviado por você</p>
        <p><b>Assunto:</b><?php echo $assunto ?></p>
        <p><b>Mensagem:</b><?php echo $mensagem ?></p>
        <p>--------------------------------</p>
        <p>Você não precisa responder a esta mensagem.</p>
        <p>Atenciosamente,</p>
        <p>Rogério Oliveira Yokoi</p>
        <p><a href="http://www.rogerioyokoi.com">HTTP://WWW.ROGERIOYOKOI.COM</a></p>
        </div>
    </div>
</div>
</body>
";

// ****** IMPORTANTE ********
// A PARTIR DE AGORA RECOMENDA-SE QUE NÃO ALTERE O SCRIPT PARA QUE O SISTEMA FINCIONE CORRETAMENTE
// ****** IMPORTANTE ********

//ESSA VARIAVEL DEFINE SE É O USUARIO QUEM DIGITA O ASSUNTO OU SE DEVE ASSUMIR O ASSUNTO DEFINIDO
//POR VOCÊ CASO O USUARIO DEFINA O ASSUNTO PONHA "s" NO LUGAR DE "n" E CRIE O CAMPO DE NOME
//'assunto' NO FORMULARIO DE ENVIO
$assunto_digitado_pelo_usuario="s";

//ENVIO DA MENSAGEM ORIGINAL
$headers = "$cabecalho_da_mensagem_original";

if($assunto_digitado_pelo_usuario=="s"){
$assunto = "$assunto_da_mensagem_original";
}
$seuemail = "$email_para_onde_vai_a_mensagem";
$mensagem = "$configuracao_da_mensagem_original";
mail($seuemail,$assunto,$mensagem,$headers);

//ENVIO DE MENSAGEM DE RESPOSTA AUTOMATICA
$headers = "$cabecalho_da_mensagem_de_resposta";
if($assunto_digitado_pelo_usuario=="n"){
$assunto = "$assunto_da_mensagem_de_resposta";
}else{
$assunto = "Re: $assunto";
}

$mensagem = "$configuracao_da_mensagem_de_resposta";
mail($email,$assunto,$mensagem,$headers);
echo "&lt;script>window.location='$exibir_apos_enviar'</script>";

?>

o código acredito eu estar bem comentado, mas irei explicar aqui o que eu gostaria que ele fizesse, tomando como principio que nada nele funciona e que esteja completamente errado.

Primeiramente, gostaria que ele recebe-se os dados vindos do formulário e verifica-se se estão dentro do padrão minimo que estou exigindo no formulário, caso certo ele passa pra frente, caso errado ele retornar um window.alert dizendo onde está errado.

Em segundo, após o envio correto gostaria que ele retorna-se à página principal mas trazendo no corpo do index.php um include contendo a frase de que o e-mail foi enviado com sucesso e que lhe foi mandado um e-mail de resposta dizendo que foi bem sucedido no envio e que o mais breve estarei respondendo ele, dai tentei configurar mas não consegui, ai vem uma pergunta onde eu coloquei o link para ir para http://www.rogerioyokoi.com, eu teria que por http://www.rogerioyokoi.com/index.php?area=sucesso ? e criar dentro dos cases um para ser denominado assim ?

a terceira coisa é no envio da auto resposta gostaria que ela fosse configurada com imagens e tudo mais, assim como descrito no código, eu criei uma mini pagina só para ser lida no e-mail do receptor com os links de referencia dentro do site....

Grato a todos.....

se algo ficou mal entendido e mesmo assim se sentir confortável em me ajudar estarei feliz em repor a explicação para seu melhor compreendimento....

Muito obrigado a todos desde já!

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Boa noite!

Encontrei pelo menos dois erros neste código...

Na linha 43:

if(strlen($mensagem)>20) || (strlen($mensagem)>500)
Você está fechando o parenteses antes de terminar a condição completa do if... veja que após o número 20 você fechou o parenteses do if. O certo é assim:
if(strlen($mensagem)>20 || strlen($mensagem)>500)
Da linha 79 a 105 você está 'tentando' colocar todo o código dentro da variável $configuracao_da_mensagem_de_resposta:
$configuracao_da_mensagem_de_resposta = "
...
Se esta realmente é sua intenção, então você deve começar com aspas simples e não dupla, pois no meio do código você também utiliza aspas duplas, o que faria com que o servidor entendesse como se você tivesse terminado a string. Se isto foi consciente, então troque as aspas delimitadas por aspas simples: (linha 79)
$configuracao_da_mensagem_de_resposta = '
(linha 205)
';
E nas linhas 90, 92, 94 e 95 e retire as tags do PHP do meio desta 'string':
<p><?php echo $date ?></p>
Deixe assim:
<p>'.$date.'</p>
E uma dica... quando estiver programando, sempre adicione estas duas linhas de código PHP no topo da sua página:
ini_set('display_errors',1);
error_reporting(E_ALL);

Assim, qualquer erro que der na página você verá uma mensagem de erro, o que ajuda MUITO a debugar o código! Inclusive se você adicioná-las nesta página que você fez, você verá alguns erros...

Não sei se fui muito claro, mas faça estas alterações e volte a postar....

Abraços

Editado por Stoma
Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia!, fiz todas as alterações relatadas.....

Funcionou certinho, agora ele manda recebe tudo certo, porém tinha uns erros que não consegui tirar, dai descidi tirar a validação do código php e por em javascript..... ficou Beleza tudo funcionando......

Agora só me restou um erro no processo....... no email que ele envia para a pessoa como auto-resposta, o mesmo não chega formatado ......

Código no arquivo ENVIAR.PHP

<?
ini_set('display_errors',1);
error_reporting(E_ALL);
/*
Script criado por:
Rogério Oliveira Yokoi
http://www.rogerioyokoi.com
*/

//Define o dia e hora em que a mensagem foi enviada
$data = date("d/m/Y h:i");

//Recebe os dados vindos do formulário para envia-los
$nome = $_POST["nome"];
$empresa = $_POST["empresa"];
$email = $_POST["email"];
$cidade = $_POST ["cidade"];
$assunto = $_POST ["assunto"];
$mensagem = $_POST ["mensagem"];

//Cabeçalho - Aqui contém os dados do site e o e-mail que recebe a mensagem e para onde redireciona no caso de sucesso
$nome_do_site="Rogério O. Yokoi";
$email_para_onde_vai_a_mensagem = "contato@rogerioyokoi.com";
$nome_de_quem_recebe_a_mensagem = "Rogério O. Yokoi";
$exibir_apos_enviar="http://www.rogerioyokoi.com/index.php?area=sucesso";

//Configurações da mensagem original
$cabecalho_da_mensagem_original="From: $name <$email>\n";
$assunto_da_mensagem_original="Contato no Site";

//Aqui configura a forma de recebimento do e-mail
$configuracao_da_mensagem_original="

ENVIADO POR:\n
Nome: $nome\n
Empresa: $empresa\n
Email: $email\n
Cidade: $cidade\n
Assunto: $assunto\n
Mensagem: $mensagem\n
ENVIADO EM: $date

";
/* Para enviar email HTML, você precisa definir o header Content-type. */
$headers  = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

//CONFIGURAÇÕES DA MENSAGEM DE RESPOSTA
// CASO $assunto_digitado_pelo_usuario="s" ESSA VARIAVEL RECEBERA AUTOMATICAMENTE A CONFIGURACAO
// "Re: $assunto"
$assunto_da_mensagem_de_resposta = "Confirmação";
$cabecalho_da_mensagem_de_resposta = "From: $nome_do_site < $email_para_onde_vai_a_mensagem>\n";
$configuracao_da_mensagem_de_resposta='
$headers
<head>
<title> $nome_site </title>
<link href="http://www.rogerioyokoi.com/auto-resposta/estilo.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="container">
    <div id="corpo">
        <img src="http://www.rogerioyokoi.com/auto-resposta/imagens/topo.png" alt="" />
        <div id="texto">
        <p>Caro $nome,</p>
        <p>Agradeço sua mensagem de contato e o mais breve possivel estará sendo respondida a você!</p>
        <p>$date</p>
        <p> Segue abaixo o contato enviado por você</p>
        <p><b>Assunto:</b>$assunto</p>
        <p><b>Mensagem:</b>$mensagem </p>
        <p>--------------------------------</p>
        <p>Você não precisa responder a esta mensagem.</p>
        <p>Atenciosamente,</p>
        <p>Rogério Oliveira Yokoi</p>
        <p><a href="http://www.rogerioyokoi.com">HTTP://WWW.ROGERIOYOKOI.COM</a></p>
        </div>
    </div>
</div>
</body>
';

// ****** IMPORTANTE ********
// A PARTIR DE AGORA RECOMENDA-SE QUE NÃO ALTERE O SCRIPT PARA QUE O SISTEMA FINCIONE CORRETAMENTE
// ****** IMPORTANTE ********

//ESSA VARIAVEL DEFINE SE É O USUARIO QUEM DIGITA O ASSUNTO OU SE DEVE ASSUMIR O ASSUNTO DEFINIDO
//POR VOCÊ CASO O USUARIO DEFINA O ASSUNTO PONHA "s" NO LUGAR DE "n" E CRIE O CAMPO DE NOME
//'assunto' NO FORMULARIO DE ENVIO
$assunto_digitado_pelo_usuario="s";

//ENVIO DA MENSAGEM ORIGINAL
$headers = "$cabecalho_da_mensagem_original";

if($assunto_digitado_pelo_usuario=="s"){
$assunto = "$assunto_da_mensagem_original";
}
$seuemail = "$email_para_onde_vai_a_mensagem";
$mensagememail = "$configuracao_da_mensagem_original";
mail($seuemail,$assunto,$mensagememail,$headers);

//ENVIO DE MENSAGEM DE RESPOSTA AUTOMATICA
$headers = "$cabecalho_da_mensagem_de_resposta";
if($assunto_digitado_pelo_usuario=="n"){
$assunto = "$assunto_da_mensagem_de_resposta";
}else{
$assunto = "Re: $assunto";
}

$mensagem = "$configuracao_da_mensagem_de_resposta";
mail($email,$assunto,$mensagem,$headers);
echo "<script>window.location='$exibir_apos_enviar'</script>";

?>

esse é o código......

agora a autoresposta está chegando assim...

$headers

<head>

<title> $nome_site </title>

<link href="http://www.rogerioyokoi.com/auto-resposta/estilo.css" rel="stylesheet" type="text/css" />

</head>

<body>

<div id="container">

<div id="corpo">

<img src="http://www.rogerioyokoi.com/auto-resposta/imagens/topo.png" alt="" />

<div id="texto">

<p>Caro $nome,</p>

<p>Agradeço sua mensagem de contato e o mais breve possivel estará sendo respondida a você!</p>

<p>$date</p>

<p> Segue abaixo o contato enviado por você</p>

<p><b>Assunto:</b>$assunto</p>

<p><b>Mensagem:</b>$mensagem </p>

<p>--------------------------------</p>

<p>Você não precisa responder a esta mensagem.</p>

<p>Atenciosamente,</p>

<p>Rogério Oliveira Yokoi</p>

<p><a href="http://www.rogerioyokoi.com">HTTP://WWW.ROGERIOYOKOI.COM</a></p>

</div>

</div>

</div>

</body>

Onde estou errando, e o que deveria alterar para a auto-resposta chegar formatada certinha para quem entra em contato ?

Link para o comentário
Compartilhar em outros sites

  • 0

Aew ^_^

Bem... pelo jeito ele não está interpretando os valores da variável, e como você precisa que ele leia o content type da página, deve ser este o problema. Altere o conteúdo da variável $configuracao_da_mensagem_de_resposta, onde tiver variável você faz assim: '.$variavel.'

Ex:

$configuracao_da_mensagem_de_resposta='
'.$headers.'
<head>
...

Link para o comentário
Compartilhar em outros sites

  • 0
Aew happy.gif

Bem... pelo jeito ele não está interpretando os valores da variável, e como você precisa que ele leia o content type da página, deve ser este o problema. Altere o conteúdo da variável $configuracao_da_mensagem_de_resposta, onde tiver variável você faz assim: '.$variavel.'

Ex:

CODE

$configuracao_da_mensagem_de_resposta='

'.$headers.'

<head>

...

Fiz isso que você falou agora..... hehehe, mas a unica coisa q consegui foi um erro de sintaxe... heheheehhe

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /home/rogerioy/public_html/includes/envia.php on line 54

vou fazer alguns outros testes aqui para ver se faço isso funcionar...... xD

e mais uma vez muito obrigado Stoma pela ajuda xD

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...