Jump to content
Fórum Script Brasil
  • 0

Formulário PHP - Ajuda


Spike-Spiegel

Question

Olá bom dia a todos, estou quebrando cabeça aqui desde ontem pois estou fazendo um website mas não tenho a menor experiencia em nada, fui aprendendo e mexendo no decorrer dessas ultimas semanas. Consegui ir me virando mais ou menos em tudo, mas nessa parte do formulario em php, algo que pra mim é muito importante no website estou tendo dificuldades.

Estava tentando fazer acompanhando tutoriais na internet mas não estou conseguindo.

Cheguei a conclusão que talvez seja perda de tempo tentar aprender assim na correria e tentar pedir ajuda a voces, já que meu formulario é bastante simples, ele é assim:

3 campos apenas, nome, email e comentario, e eu gostaria que ele fosse enviado para meu email, somente isso.

Vou colar aqui o codigo da tabela do formulario:

<form action="enviar.php" method="post" id="sampleform">

<p><label for="author">Nome:</label><br />

<input type="text" name="author" id="author" class="textarea" value="" tabindex="1" /></p>

<p><label for="email">E-mail:</label><br />

<input type="text" name="email" id="email" value="" tabindex="2" /></p>

<p><label for="comment">Mensagem:</label><br />

<textarea name="comment" id="comment" rows="7" cols="50" tabindex="4"></textarea></p>

<p><input class="button" name="submit" id="submit" type="submit" tabindex="5" value="Enviar" /></p>

</form>

A estrutura foi retirada de um template pronto da internet.

Como deveria ser o meu php para que as informaçoes desses 3 campos fossem enviados para o meu email?

Desde já obrigado a todos.

Link to comment
Share on other sites

20 answers to this question

Recommended Posts

  • 0

Certo, bem vindo ao fórum. Vamos lá.

Seguindo a ordem para executar a tarefa:

Você sabe o que a palavra "post" significa no atributo "method" da tag "form"? Você sabe pegar os dados do formulário no PHP? Este link responde estas perguntas.

Certo, com os dados em mãos, a próxima etapa é envia-los para o e-mail. O PHP fornece a função mail para enviar e-mails. Leia o manual.

O mais importante aqui é que você tentou e tem interesse em aprender. Leia o que eu te passei, faça testes e se surgirem dúvidas volte. Não esqueça de postar o seu código.

Um abraço.

Link to comment
Share on other sites

  • 0

Você chegou a testar o seu código? Funcionou? Não deu certo? Apareceu algum erro?

<?php
$author = $_POST['author'];
$email = $_POST['emai'l];
$comment = $_POST['comment'];
$message = "Nome: $author\nEmail: $email\nMensagem: $comment";

mail("exemplo@gmail.com", $exemplo, $message);
?>

Ao invés de utilizar $_POST[nomedocampo] utilize $_POST['nomedocampo'] com um apóstrofos ou aspas.

Já que você está utilizando apenas a variável $exemplo dentro da função mail, ela não precisa ficar entre aspas.

Um abraço.

Link to comment
Share on other sites

  • 0

Código PHP pode ser executado através da linha de comando ou de um servidor WEB. No seu caso, você pode baixar o EasyPHP. Este pacote acompanha o PHP em si, um servidor WEB (Apache), banco de dados (MySQL), entre outros. Basta instalar e executar.

Coloque os seus arquivos na pasta www, dentro da pasta do EasyPHP e acesse a página http://localhost:8888/nomedoarquivodoformulario.extensao.

Se tiver dúvidas poste novamente.

Um abraço.

Link to comment
Share on other sites

  • 0

Adicione o quarto parâmetro da função mail, additional_headers:

<?php
$author = $_POST['author'];
$email = $_POST['emai'l];
$comment = $_POST['comment'];
$message = "Nome: $author\nEmail: $email\nMensagem: $comment";
$headers = "MIME-Version: 1.0\nContent-type: text/plain; charset=UTF-8\n";
$headers .= "From: Nome <email@example.com>\n";

mail("exemplo@gmail.com", $exemplo, $message, $headers);
?>

Nome pode ser substituído pela variável $author e email@example.com pode ser substituído por $email.

Faça uma verificação antes de enviar o e-mail. Entradas feitas por usuários SEMPRE devem ser checadas e filtradas.

Um abraço.

Link to comment
Share on other sites

  • 0

Tá dificil, primeiro fiz igual ao seu, depois li no manual e mudei e fiz assim:

<?php

$author = $_POST['author'];

$email = $_POST['email'];

$comment = $_POST['comment'];

$message = "Nome: $author\nEmail: $email\nMensagem: $comment";

$headers = "MIME-Version: 1.0\nContent-type: text/plain; charset=UTF-8\n";

$headers .= "From: $email . "\r\n" .

mail("x@gmail.com", $message, $headers);

?>

E continua dando o mesmo erro

Edited by Spike-Spiegel
Link to comment
Share on other sites

  • 0
Eu não entendi, poderia ser mais especifico, eu mandei o email, a mensagem e o tal headers que o erro dava como faltando mas continua dizendo que esta faltando o From:
Compare com o manual, fazendo assim, você mandou apenas os 3 primeiros parâmetros:

mail("x@gmail.com", $message, $headers);

mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )

Nesse caso você mandou os parâmetros $to, $subject e $message... $headers ficou de fora. Quando você chama uma função, o que importa é a ordem, não o nome dos parâmetros ... Se você tivesse escrito mail($foo, $bar, $lorem, $ipsum), estaria mandando os parâmetros $to, $subject, $message e $headers da mesma forma.

Se você não entender ou mesmo assim não funcionar, poste novamente.

Um abraço.

Link to comment
Share on other sites

  • 0

A maioria das hospedagens atuais requer que o e-mail de partida seja um e-mail válido em sua hospedagem, e não mais como antigamente quando o preenchedor do formulário preenchia. Portanto fixe o e-mail que esta enviando em um valor da sua hospedagem e chame o e-mail que o cliente preenche como email2 ou coisa parecida.

Link to comment
Share on other sites

  • 0

Opa, obrigado a todos parece que agora obtive algum progresso, a mensagem de erro mudou.

William: Entendi essa parte da ordem e ajudou bastante.

a msg de erro agora foi referente ao envio do email:

Warning: mail() [function.mail]: Failed to connect to mailserver at "127.0.0.1" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\Arquivos de programas\EasyPHP-5.3.6.0\www\enviar.php on line 10

Eu fiz assim

<?php

$author = $_POST['author];

$email = $_POST['email'];

$comment = $_POST['comment'];

$message = "Nome: $author\nEmail: $email\nMensagem: $comment";

$headers = 'From: $email' . "\r\n" .

$to = 'meuemail@gmail.com';

$subject = 'x';

mail($to, $subject, $message, $headers);

?>

Link to comment
Share on other sites

  • 0

Bom dia Spike

o proprio erro já diz o que você deve fazer (se estou pulando alguma coisa desculpa, pegar o trem andando é foda)

você tem que colocar as configurações do servidor smtp que você vai usar dentro do php.ini, a função mail() não é tão simples assim...

Link to comment
Share on other sites

  • 0

Ok, mas eu queria saber se essa mudança é so pra funcionar no pc, ou mesmo com o site hospedado tem que ter isso.

E qual exatamente seria essa mudança, eu entrei la e coloquei o meu email e o smtp do hotmail mas deu que não conseguiu conectar. Acho que deve ser tb por n ter servidor de email mas nem sei o q é isso.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...