{"componentChunkName":"component---src-templates-blog-post-index-js","path":"/formulario-em-php/","result":{"data":{"markdownRemark":{"fields":{"slug":"/formulario-em-php/"},"frontmatter":{"category":"Back-End","date":"25/01/2006","description":"","featuredImage":{"childImageSharp":{"fluid":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAME/8QAFQEBAQAAAAAAAAAAAAAAAAAAAQP/2gAMAwEAAhADEAAAAY5sqkLJl//EABkQAAIDAQAAAAAAAAAAAAAAAAABAhESA//aAAgBAQABBQJ9ByZs0WKFn//EABcRAAMBAAAAAAAAAAAAAAAAAAACESL/2gAIAQMBAT8BVIZP/8QAFhEBAQEAAAAAAAAAAAAAAAAAABIh/9oACAECAQE/Aaa//8QAGBAAAgMAAAAAAAAAAAAAAAAAADEQIkH/2gAIAQEABj8CqKcGf//EABsQAAIDAAMAAAAAAAAAAAAAAAABESFBUZGx/9oACAEBAAE/IXTayTcHykV0bJid50IU+D//2gAMAwEAAgADAAAAEOPf/8QAFREBAQAAAAAAAAAAAAAAAAAAABH/2gAIAQMBAT8QjQ//xAAWEQEBAQAAAAAAAAAAAAAAAAABABH/2gAIAQIBAT8QdMN//8QAHRABAQACAgMBAAAAAAAAAAAAAREAIUFhMXGR8P/aAAgBAQABPxClQjhxtQvMC+5gtRZaaW87PmFoB2bY1U/nef/Z","aspectRatio":1.5384615384615385,"src":"/static/f3d18130dfe174835b19cc7b2452ffd9/86e90/backend.jpg","srcSet":"/static/f3d18130dfe174835b19cc7b2452ffd9/17b1e/backend.jpg 240w,\n/static/f3d18130dfe174835b19cc7b2452ffd9/2d331/backend.jpg 480w,\n/static/f3d18130dfe174835b19cc7b2452ffd9/86e90/backend.jpg 960w","srcWebp":"/static/f3d18130dfe174835b19cc7b2452ffd9/c30ee/backend.webp","srcSetWebp":"/static/f3d18130dfe174835b19cc7b2452ffd9/e8667/backend.webp 240w,\n/static/f3d18130dfe174835b19cc7b2452ffd9/87b7f/backend.webp 480w,\n/static/f3d18130dfe174835b19cc7b2452ffd9/c30ee/backend.webp 960w","sizes":"(max-width: 960px) 100vw, 960px"}}},"photographer":"","title":"Formulario em PHP"},"timeToRead":6,"html":"<p>Estava eu tranquilo, quando Leandro Cunha, camaradassa meu me perguntou sobre como fazer um formulário via PHP. Como estava no <a href=\"http://www.meebo.com\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">meebo</a> e odeio esses IM via browser, achei melhor postar algo no Blog, com isso, posso ajudar possíveis pessoas que tenham dúvidas sobre o assunto.</p>\n<p>É muito simples sua implementação, pra quem já conhece PHP legal, já mexe, isso é mole, mas pro pessoal que tah começando agora, tah no básico ainda, vale ler (eu acho :P)</p>\n<h2>Primeira Parte - HTML</h2>\n<p>Primeiramente, lógico, vou postar um código html de um formulário (lembrando que não coloquei nenhum estilo pro formulário, isso fica com vocês ok? ;) ) ver exemplo online:</p>\n<div class=\"gatsby-highlight\" data-language=\"html\"><pre class=\"language-html\"><code class=\"language-html\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>form</span> <span class=\"token attr-name\">action</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>enviar_formulario.php<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">method</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>post<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n  Nome:<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>br</span> <span class=\"token punctuation\">/></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>input</span> <span class=\"token attr-name\">type</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>text<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">name</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>nome<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span> E-mail:<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>br</span> <span class=\"token punctuation\">/></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>input</span> <span class=\"token attr-name\">type</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>text<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">name</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>email<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span> Mensagem:<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>br</span> <span class=\"token punctuation\">/></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>textarea</span> <span class=\"token attr-name\">name</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>mensagem<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">cols</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>32<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">rows</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>8<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>textarea</span><span class=\"token punctuation\">></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>br</span> <span class=\"token punctuation\">/></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>input</span> <span class=\"token attr-name\">type</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>submit<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">value</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>Enviar<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>form</span><span class=\"token punctuation\">></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>form</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>form</span><span class=\"token punctuation\">></span></span></code></pre></div>\n<p>Como podemos ver, um simples formulário, muito feio, sem estilo nenhum. Caso queiram modificar, fiquem à vontade, coloquem fieldset, legend, labels, etc... Vou ver se em breve eu crio um tutorial de como criar um formulário estilizado e nos padrões ;)</p>\n<p>Creio que não precise comentar sobre o código acima, todos que estiverem lendo devem conhecer html (pelo menos espero), mas darei uma comentada:</p>\n<h3><code class=\"language-text\">&lt;form action=&quot;enviar\\_formulario.php&quot; method=&quot;post&quot;&gt;</code></h3>\n<p>Nesta linha, criei a tag form, essencial, e nela coloquei o atributo action que recebe o a página onde o formulário enviará as informações dispostas nos campos do formulário. A página utilizada foi a enviar_formulario.php, mas o nome fica a critério de vocês, contanto que mude também quando criarem-na ok? ;)</p>\n<h3><code class=\"language-text\">Nome:&lt;br /&gt; &lt;input type=&quot;text&quot; name=&quot;nome&quot; /&gt;</code></h3>\n<p>Um texto Nome:, indicando que o próximo campo é para colocar o nome, um pulo de linha, para o campo vir abaixo do texto e o input que cria o campo de texto chamado nome, que vai ser enviado pelo formulário e o arquivo php receberá como variável.</p>\n<h3><code class=\"language-text\">E-mail:&lt;br /&gt; &lt;input type=&quot;text&quot; name=&quot;email&quot; /&gt;</code></h3>\n<p>Idem ao item anterior, só mudando para E-mail.</p>\n<h3><code class=\"language-text\">Mensagem:&lt;br /&gt; &lt;textarea name=&quot;mensagem&quot; cols=&quot;32&quot; rows=&quot;8&quot;&gt;&lt;/textarea&gt;&lt;br /&gt;</code></h3>\n<p>Semelhante aos anteriores, mas ao invés de input, é um textarea, para receber mais informações, pois geralmente mensagens são maiores. E nele, têm 32 colunas de largura e 8 linhas de altura.</p>\n<h3><code class=\"language-text\">&lt;input type=&quot;submit&quot; value=&quot;Enviar&quot; /&gt;</code></h3>\n<p>Um input com o botão de envio do formulário. É através dele que o formulário será enviado para a página php setada no action da tag form.</p>\n<p>Espero que tenham entendido essa parte, acho que deu pra dar uma explicadinha legalzinha sobre cada parte. Agora vamos cair dentro do arquivo php.</p>\n<h2>Arquivo <code class=\"language-text\">enviar_formulario.php</code></h2>\n<div class=\"gatsby-highlight\" data-language=\"php\"><pre class=\"language-php\"><code class=\"language-php\"><span class=\"token php language-php\"><span class=\"token delimiter important\">&lt;?php</span>\n<span class=\"token variable\">$nome</span> <span class=\"token operator\">=</span> <span class=\"token variable\">$_POST</span><span class=\"token punctuation\">[</span><span class=\"token string single-quoted-string\">'nome'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$email</span> <span class=\"token operator\">=</span> <span class=\"token variable\">$_POST</span><span class=\"token punctuation\">[</span><span class=\"token string single-quoted-string\">'email'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$mensagem</span> <span class=\"token operator\">=</span> <span class=\"token variable\">$_POST</span><span class=\"token punctuation\">[</span><span class=\"token string single-quoted-string\">'mensagem'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$msg</span> <span class=\"token operator\">=</span> <span class=\"token string double-quoted-string\">\"&lt;font face='Verdana' size='1'>&lt;b>Nome:&lt;/b> \\t<span class=\"token interpolation\"><span class=\"token variable\">$nome</span></span>&lt;/font>&lt;br>\"</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$msg</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\"&lt;font face='Verdana' size='1'>&lt;b>E-mail:&lt;/b> \\t<span class=\"token interpolation\"><span class=\"token variable\">$email</span></span>&lt;/font>&lt;br>\"</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$msg</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\"&lt;font face='Verdana' size='1'>&lt;b>Mensagem:&lt;/b> \\t<span class=\"token interpolation\"><span class=\"token variable\">$mensagem</span></span>&lt;/font>\"</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$mensagem</span> <span class=\"token operator\">=</span> <span class=\"token string double-quoted-string\">\"<span class=\"token interpolation\"><span class=\"token variable\">$msg</span></span>\"</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$remetente</span> <span class=\"token operator\">=</span> <span class=\"token string double-quoted-string\">\"<span class=\"token interpolation\"><span class=\"token variable\">$email</span></span>\"</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$destinatario</span> <span class=\"token operator\">=</span> <span class=\"token string double-quoted-string\">\"bruno@brunodulcetti.com\"</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$assunto</span> <span class=\"token operator\">=</span> <span class=\"token string double-quoted-string\">\"Tutorial de Formulário BrunoDulcetti.com\"</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$headers</span> <span class=\"token operator\">=</span> <span class=\"token string double-quoted-string\">\"From: \"</span><span class=\"token operator\">.</span><span class=\"token variable\">$remetente</span><span class=\"token operator\">.</span><span class=\"token string double-quoted-string\">\"\\nContent-type: text/html\"</span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\"># o 'text/html' é o tipo mime da mensagem</span>\n<span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token operator\">!</span><span class=\"token function\">mail</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$destinatario</span><span class=\"token punctuation\">,</span><span class=\"token variable\">$assunto</span><span class=\"token punctuation\">,</span><span class=\"token variable\">$mensagem</span><span class=\"token punctuation\">,</span><span class=\"token variable\">$headers</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">print</span> <span class=\"token string double-quoted-string\">\"falha no envio da mensagem\"</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">echo</span> <span class=\"token string double-quoted-string\">\"&lt;script>window.location.href='obrigado.htm'&lt;/script>\"</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n<span class=\"token delimiter important\">?></span></span></code></pre></div>\n<p>Bom, vamos lá, agora explicarei as linhas desse arquivo:</p>\n<h3><code class=\"language-text\">&lt;?php</code></h3>\n<p>Linha de abertura de código php, sem isso, nada de php funcionando :D</p>\n<h3><code class=\"language-text\">$nome = $_POST[&#39;nome&#39;];</code></h3>\n<p>Essa linha, a variavel nome é criada e ela recebe o campo de texto nome, que foi enviado via método post pelo formulário, lembra? method=\"post no form, agora lembra não é? ;)</p>\n<h3><code class=\"language-text\">$email = $_POST[&#39;email&#39;];</code></h3>\n<p>Igual ao nome, mas mudando a variável para email e o <code class=\"language-text\">$_POST[&#39;&#39;]</code> recebe o campo email enviado pelo formulário.</p>\n<h3><code class=\"language-text\">$mensagem = $_POST[&#39;mensagem&#39;];</code></h3>\n<p>Igual aos anteriores, mas mudando a variável para mensagem e o <code class=\"language-text\">$_POST[&#39;&#39;]</code> recebe o campo mensagem enviado pelo formulário.</p>\n<h3><code class=\"language-text\">$msg = &quot;&lt;font face=&#39;Verdana&#39; size=&#39;1&#39;&gt;&lt;b&gt;Nome:&lt;/b&gt; \\t$nome&lt;/font&gt;&lt;br&gt;&quot;;</code></h3>\n<p>Aqui é criada uma variável msg, onde ela recebe a variável nome, que declaramos e demos o valor à ela anteriormente. A grande sacada e diferença, foi que eu usei uma tag font com a fonte Verdana como fonte padrão e tamanho 1. Fiz somente para o formulário ser enviado com mais estilo, ficar um pouco mais bonito, senão fica aquela fonte padrão feia. Mas isso fica a critério de vocês. E coloquei um br no final, para pular de linha.</p>\n<h3><code class=\"language-text\">$msg .= &quot;&lt;font face=&#39;Verdana&#39; size=&#39;1&#39;&gt;&lt;b&gt;E-mail:&lt;/b&gt; \\t$email&lt;/font&gt;&lt;br&gt;&quot;;</code></h3>\n<p>Idêntico ao anterior, mudando somente para variável email e a variável msg recebe o valor anterior mais esse, não sobrescrevendo o valor anterior.</p>\n<h3><code class=\"language-text\">$msg .= &quot;&lt;font face=&#39;Verdana&#39; size=&#39;1&#39;&gt;&lt;b&gt;Mensagem:&lt;/b&gt; \\t$mensagem&lt;/font&gt;&quot;;</code></h3>\n<p>Idêntico aos anteriores, mudando somente para variável mensagem e a variável msg recebe os valores anteriores mais esse, não sobrescrevendo o valores anteriores.</p>\n<h3><code class=\"language-text\">$mensagem = &quot;$msg&quot;;</code></h3>\n<p>Variável mensagem recebendo todo o conteúdo da variável msg.</p>\n<h3><code class=\"language-text\">$remetente = &quot;$email&quot;;</code></h3>\n<p>Variável remetente recebendo a variavel email, que contém o email preenchido no formulário, que aparecerá como o remetente no webmail.</p>\n<h3><code class=\"language-text\">\\$destinatario = &quot;bruno@brunodulcetti.com&quot;;</code></h3>\n<p>Aqui temos uma variável destinatario, que é onde você colocará o email para onde o conteúdo será enviado.</p>\n<h3><code class=\"language-text\">\\$assunto = &quot;Tutorial de Formulário BrunoDulcetti.com&quot;;</code></h3>\n<p>Variável assunto, que receberá um assunto especificado por você que aparecerá como título, assunto do email que chegará para você.</p>\n<h3><code class=\"language-text\">$headers = &quot;From: &quot;.$remetente.&quot;\\nContent-type: text/html&quot;; # o &#39;text/html&#39; é o tipo mime da mensagem</code></h3>\n<p>Variável headers que será enviado junto com o email, dizendo o mime da mensagem.</p>\n<h3><code class=\"language-text\">if(!mail($destinatario,$assunto,$mensagem,$headers)){</code></h3>\n<p>Eu poderia pular essa parte, não colocar um if, mas coloquei, para caso dê algum problema no envio, apareça um aviso. Neste if, temos um mail, que é a variável do php de envio de emails feitos por ele. Em ordem, colocamos as variáveis destinatario que é seu email, assunto que é o título, assunto do email, mensagem que é o conteúdo do email enviado pelo formulário e o headers. Neste if ele diz resumidamente \"Se (o email não foi enviado) fazer\". O símbolo de ! significa negação no php e o { significa o início das funções dentro do if.</p>\n<h3><code class=\"language-text\">print &quot;falha no envio da mensagem&quot;;</code></h3>\n<p>Como disse acima, caso o email não seja enviado, apareçe esta mensagem de erro, avisando que houve uma falha.</p>\n<h3><code class=\"language-text\">} else {</code></h3>\n<p>Aqui temos o fechamento do if, que é simbolizado pelo <code class=\"language-text\">}</code> e temos o else, que significa \"então\" e um símbolo de { indicando que haverá outra função ou funções.</p>\n<h3><code class=\"language-text\">echo &quot;&lt;script&gt;window.location.href=&#39;obrigado.htm&#39;&lt;/script&gt;&quot;;</code></h3>\n<p>Aqui nós temos a função que redireciona para uma nova página, de obrigado, que vocês podem modificá-la como quiserem, tanto nome, layout, etc. Havendo mudança no nome, modifiquem aqui também para que não haja erro 404.</p>\n<h3><code class=\"language-text\">}</code></h3>\n<p>Fechamento do else, fechamento definitivo do laço if.</p>\n<p>No geral, traduzindo, seria: \"Se (o email não foi enviado) faça\" \"falha no envio\" \"senão (se o email foi enviado corretamente) faça\" \"redirecionamento e obrigado\" \"fim do if\"</p>\n<h3><code class=\"language-text\">?&gt;</code></h3>\n<p>Aqui temos o fechamento do php.</p>\n<p>Temos esse script funcionando na <a href=\"/contato\">seção contato do meu site</a>.</p>\n<p>Espero que tenham gostado e que tenha sido de fácil compreensão. Aos avançados, desculpem, mas preferi colocar algo básico agora, pro pessoal que tá começando... Em breve posto algo mais avançado ok?</p>\n<p>Aquele abraço galera.</p>"}},"pageContext":{"nextPost":{"fields":{"slug":"/firefox-turbinado/"},"frontmatter":{"title":"Firefox Turbinado"}},"previousPost":{"fields":{"slug":"/google-news/"},"frontmatter":{"title":"Google News"}},"slug":"/formulario-em-php/"}},"staticQueryHashes":["1271460761","2963127411","3623170217","764694655"]}