Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ilustrando

[Resolvido] Formulario de E-mail e Site em PHP

Recommended Posts

Olá meus caros amigos do Imasters, boa noite.

Mais uma vez recorro aos grandes Mestres do conhecimento...

 

na verdade eu tenho algumas dúvidas, mas como é aconselhável que seja feita apenas uma pergunta por tópico....ai vai...rsrsrs

Sou Designer ( já disse isto em algum tópico anterior ) e como todo Designer não sei programação, claro que tento me aventurar, mas sabe como é né.

 

Então tenho muitos problemas com formulários de contato quando desenvolvo um site..... agora o problema é particular.

 

Eu tenho um site onde ofereço meus serviços de Designer e antes era Flash, depois passei para Html e agora é todo em PHP, não me perguntem o por que de eu passar o site para PHP se eu não sou programador, mas passei.

Agora gostaria de saber como eu faço um formulário de contato.

Eu tenho meio que um modelo que uso para quase todos que eu faço, inclusive em um deles pedi ajuda aqui no fórum e consegui resolver, mas no caso era um formulário que vinha do site feito em Flash, agora no caso é de uma página PHP para um arquivo PHP ( form.php )

 

o código do meu formulário na página PHP ( contato.php ) é:

<form action="form.php" method="post">
     <p><center><b>Formulário para Contato</b></center></p>
     Nome:</br>
     <input name="nome" type="text" size="51">
     E-mail:</br>
     <input name="email" type="text" size="51">
     Telefones:</br>
     <input name="telefones" type="text" size="51">
     Assunto:</br>
     <input name="assunto" type="text" size="51">
     Mensagem:</br>
     <textarea name="mensagem" cols="40" rows="6" id="textarea"></textarea>
     </br>
     <input type="submit" name="Submit" value="Enviar">
     <input type="reset" name="limpar" value="Limpar">
    </form>

 

e o código do arquivo PHP ( form.php ) é:

<?php
// Email para receber o formulario de contato
$recipient = "usuario@meudominio.com.br";

// Titulo do e-mail/formulario
$subject = "Contato Site - Ilustrando Design";

// Mensagem completa, junção das caixas no flash
$msg = "Nome: $nome\n\nAssunto: $assunto\n\nTelefones: $telefones\n\nE-mail: $email\n\nMensagem: $mensagem";

// Endereço de e-mail que enviará o formulário ( remetente )
$mailheaders = "From: $email";

mail("$recipient", "$subject", "$msg", "$mailheaders");
?>

 

Não sei se esta certo da forma que eu fiz, mas não recebo o e-mail com os dados.

Ando tendo alguns problemas de e-mail com a empresa que hospedo meu site (locaweb), inclusive alguns estranhos quando estou desenvolvendo sites para alguns clientes...mas este caso eu deixo para um próximo tópico ( a não ser que seja permitido usar este tópico mesmo...rsrsrs ).

 

Bom, se alguém souber o que esta acontecendo e puder me dar uma solução.....ficaria grato.

 

Muito obrigado meus amigos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você deve criar as variáveis. Por exemplo:

 

$nome = $_POST['nome'];

 

As variáveis só são criadas automaticamente se register_globals estiver em ON, o que não ocorre por padrão desde o PHP 4.2.0.

 

 

TUdo está explicado aqui:

http://php.net/manual/en/security.globals.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu fiz isto e me joga para o arquivo form.php....e fica tudo branco na tela....

Fez isso onde?

Não vi no código

 

 

O register_globals est em On já, veja neste link que é as informações do meu servidor....

http://www.ilustrandodesign.com.br/essential_files/info.php

credo, que horror

apenas saiba que é inseguro manter em ON. O link que passei explica tudo isso

Compartilhar este post


Link para o post
Compartilhar em outros sites

A...desculpa....eu alterei aqui....inseri o código e fiz o teste....e aconteceu aquilo, depois que eu jogo as informações e cliquo em enviar ele me joga para o arquivo form.php....e fica tudo branco.

 

Desculpe, por isso que não coloquei no código, pois fiz isto quando me falou....me expressei errado.

 

Então, com relação ao register_globals como eu altero ele?

Pois estas são informações da Locaweb.

 

Sabe o que devo fazer?

 

Obrigado pela ajuda meu amigo.

 

A.....e o link que você me passou eu dei uma olhada.....mas eu não entendo nada...hahaha

Compartilhar este post


Link para o post
Compartilhar em outros sites

A...desculpa....eu alterei aqui....inseri o código e fiz o teste....e aconteceu aquilo, depois que eu jogo as informações e cliquo em enviar ele me joga para o arquivo form.php....e fica tudo branco.

Se você não nos mostra como fez, nunca saberemos onde pode estar o erro...

Vucê não exibe nada na tela. É normal ficar tudo em branco.

 

 

 

Então, com relação ao register_globals como eu altero ele?

Pois estas são informações da Locaweb.

Sabe o que devo fazer?

 

:google:

http://lmgtfy.com/?q=desabilitar+register_globals

 

 

A.....e o link que você me passou eu dei uma olhada.....mas eu não entendo nada...hahaha

Selecione o idioma brasileiro

Programar dependendo de register globals é pedir para ter problemas com seus scripts

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ata....beleza.

 

O código que esta no arquivo form.php agora é:

<?php
// Variáveis
$nome = $_POST['nome'];
$email = $_POST['email'];
$telefones = $_POST['telefones'];
$assunto = $_POST['assunto'];
$mensagem = $_POST['mensagem'];

// Email para receber o formulario de contato
$recipient = "usuario@meudomiio.com.br";

// Titulo do e-mail/formulario
$subject = "Contato Site - Ilustrando Design";

// Mensagem completa, junção das caixas no flash
$msg = "Nome: $nome\n\nAssunto: $assunto\n\nTelefone: $telefone\n\nE-mail: $email\n\nMensagem: $mensagem";

// Codificação, para acentuação
$msg = utf8_decode($msg);

// Endereço de e-mail que enviará o formulário ( remetente )
$mailheaders = "From: $email";

mail("$recipient", "$subject", "$msg", "$mailheaders");

 

Eu não entendo de programação.....não sei nada, pois como eu disse....sou um Designer não um programador, mas nesta de pesquisar o que estava acontecendo eu ja vi algumas coisas dizendo o mesmo o que você esta me dizendo.....que podemos ter alguns problemas se ele estiver habilitado.

 

Eu vi o link que me mandou agora....vou criar um arquivo chamado php.ini como o código:

[php]
register_globals = Off

 

Vou fazer o teste aqui.....se o código estiver errado....pode puxar minha orelha.

 

Valeu mesmo pela ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

troque:

mail("$recipient", "$subject", "$msg", "$mailheaders");

 

por

$mail = mail("$recipient", "$subject", "$msg", "$mailheaders");
var_dump( $mail );

 

o que aparece?

 

 

também coloque no topo do script:

ini_set( 'display_errors', 1 );
error_reportin( E_ALL );

 

isso habilita a exibição de erros

 

 

 

 

 

sobre desabilitar register_globals, prefira o método usando htaccess, que é o mais comum. Arquivo php.ini local só funciona em servidores onde o PHP roda em suExec ou CLI. htaccess é usado quando o PHP roda como módulo do Apache, o que é mais comum

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, inseri os códigos.....estava vendo aquela questão de ficar em branco e tal....peguei um código na net, o meu código final ficou assim:

 

<?php
ini_set( 'display_errors', 1 );
error_reportin( E_ALL );

header("refresh: 3;contato.php");
// Variáveis
$nome = $_POST['nome'];
$email = $_POST['email'];
$telefones = $_POST['telefones'];
$assunto = $_POST['assunto'];
$mensagem = $_POST['mensagem'];

// Email para receber o formulario de contato
$recipient = "usuraio@meudominio.com.br";

// Titulo do e-mail/formulario
$subject = "Contato Site - Ilustrando Design";

// Mensagem completa, junção das caixas no flash
$msg = "Nome: $nome\n\nAssunto: $assunto\n\nTelefone: $telefone\n\nE-mail: $email\n\nMensagem: $mensagem";

// Codificação, para acentuação
$msg = utf8_decode($msg);

// Endereço de e-mail que enviará o formulário ( remetente )
$mailheaders = "From: $email";

$mail = mail("$recipient", "$subject", "$msg", "$mailheaders");
var_dump( $mail );

?>

 

Eu fiz o teste aqui e me apareceu este erro:

 

PHP Fatal error: Call to undefined function error_reportin() in E:\home\ilustrandodesign\Web\form.php on line 3

 

Agora esta questão de desabilitar, vou tentar descobri como faz isto....da forma que me falou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Viu eu arrumei lá o código e apareceu esta mensagem aqui:

 

PHP Notice: Undefined variable: telefone in E:\home\ilustrandodesign\Web\form.php on line 20

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim...eu mudei aqui.....apareceu este bool(true)

ai depois me jogou de volta para a página contato.php por conta daquele código:

 

header("refresh: 3;contato.php");

 

Mas até agora os e-mails não chegaram.

 

Vamos ver se chega, pois ando tendo muitos problemas de e-mails com a Locaweb, incluindo atrazos de e-mails.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Viche Maria....agora esta falando em Chinês para mim...rsrsrs.

Vou tentar pesquisar sobre estes negócios todos ai....qualquer coisa posso voltar a te encher novamente?

rsrsrsrs....

Compartilhar este post


Link para o post
Compartilhar em outros sites

a locaweb mudou a forma com que os emails são enviados, veja os teus cabeçalhos:

$mailheaders = "From: $email";

muito simples cara..

 

eles estão exigindo também:, Reply-To e Return-Path

 

mude o 'site.com.br', para o teu dominio, e tente:

$headers = "MIME-Version: 1.0".PHP_EOL;	
$headers .= "Content-type: text/html; charset=iso-8859-1".PHP_EOL;
$headers .= "From: No-Reply@site.com.br".PHP_EOL;
$headers .= 'Reply-To: "No-Reply" <no-reply@site.com.br> '.PHP_EOL;
$headers .= 'Return-Path: "Contato" <contato@site.com.br> '.PHP_EOL;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então eu deixo o código desta forma:

<?php
ini_set( 'display_errors', 1 );
error_reporting( E_ALL );

header("refresh: 3;contato.php");

// Variáveis
$nome = $_POST['nome'];
$email = $_POST['email'];
$telefones = $_POST['telefones'];
$assunto = $_POST['assunto'];
$mensagem = $_POST['mensagem'];

// Email para receber o formulario de contato
$recipient = "leandro.almeida@ilustrandodesign.com.br";

// Titulo do e-mail/formulario
$subject = "Contato Site - Ilustrando Design";

// Mensagem completa, junção das caixas no flash
$msg = "Nome: $nome\n\nAssunto: $assunto\n\nTelefones: $telefones\n\nE-mail: $email\n\nMensagem: $mensagem";

// Codificação, para acentuação
$msg = utf8_decode($msg);

// Endereço de e-mail que enviará o formulário ( remetente )
//$mailheaders = "From: $email";

$headers = "MIME-Version: 1.0".PHP_EOL; 
       $headers .= "Content-type: text/html; charset=iso-8859-1".PHP_EOL;
       $headers .= "From: No-Reply@ilustrandodesign.com.br".PHP_EOL;
       $headers .= 'Reply-To: "No-Reply" <no-reply@ilustrandodesign.com.br> '.PHP_EOL;
       $headers .= 'Return-Path: "Contato" <contato@ilustrandodesign.com.br> '.PHP_EOL;

$mail = mail("$recipient", "$subject", "$msg", "$headers");
var_dump( $mail );

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim, mas troque:

$mail = mail("$recipient", "$subject", "$msg", "$headers");

por:

$mail = mail( $recipient, $subject, $msg, $headers );

as aspas eram desnecessárias.

 

funcionou ai ? recebeu ao menos na caixa de spam ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu troquei aqui, mas não recebi nada!

 

Se bem que pode demorar, devido ao atraso dos e-mails

 

é.....não chegou mesmo.

 

:(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Viche Maria....agora esta falando em Chinês para mim...rsrsrs.

Vou tentar pesquisar sobre estes negócios todos ai....qualquer coisa posso voltar a te encher novamente?

rsrsrsrs....

 

PHPMailer é uma classe bem completa para envio de emails. Não é difícil usá-la

 

Site oficial:

http://phpmailer.worxware.com/

 

Tutoriais:

http://www.vivaolinux.com.br/dica/Utilizando-a-classe-phpmailer-como-alternativa-a-funcao-mail()-do-PHP

http://forum.imasters.com.br/index.php?/topic/363321-formulario-de-contato-com-multiplos-destinatarios/

 

Tente aí e volte dizer qual foi o resultado

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.