Fesi 0 Denunciar post Postado Janeiro 19, 2008 Oi pessoal, Eu acredito que o meu problema seja fácil de resolver pra vcs. Fiz meu primeiro site www.fazendariopreto.com e www.ffesi.com, só que o formulário não funciona adequadamente. Um amigo entendido em PHP testou no servidor dele e tudo correu muito bem, funcionou legal. Eu acho que a falha está na configuração/adaptação que tenho que fazer para funcionar no meu servidor a locaweb. Vou passar para vcs o meu código, achei ele facilmente na internet e apenas coloquei meus dados e acrescentei um script em php. Ainda estou iniciando em PHP, não sei praticamente nada. Aí vai: contato.php: [/code]<h1>Formulário Para Contato:</h1> <form id="comments_form" action="recebe_dados.php" method="post"> <font face="Courier New"> <input type="hidden" name="emaildest" value="riopreto@fazendariopreto.com"></font> <font face="Courier New"> <input type="hidden" name="redirecionar" value="validacao.php"> </font> <fieldset> <legend>Dados Do Cliente</legend> <p> <label for="author">Nome: <em class="required">(*)</em></label> <input name="name" id="name" type="text" /> </p> <p> <label for="email">Email: <em class="required">(*)</em></label> <input name="email" id="email" type="text" /> </p> <p> <label for="url">Telefone p/ contato:</label> <input name="tel" id="tel" type="text" /> </p> </fieldset> <fieldset> <legend>Comentários</legend> <p> <label for="text">Mensagem: <em class="required">(*)</em></label> <textarea name="text" id="text" cols="20" rows="10"></textarea> </p> </fieldset> <p><input id="submit" class="submit" name="submit" type="submit"/></p> </form> [code] recebe_dados.php: [/code]<?php require "config.ini"; ?> <?php ini_set ("SMTP","smtp.eb.mil.br"); $nome=$_POST["name"]; $email=$_POST["email"]; $telefone=$_POST["tel"]; $mensagem=$_POST["text"]; // elimina os erros mais comuns na digitação de e-mails $email = str_replace (" ", "", $email); $email = str_replace ("/", "", $email); $email = str_replace ("@.", "@", $email); $email = str_replace (".@", "@", $email); $email = str_replace (",", ".", $email); $email = str_replace (";", ".", $email); $erro=0; // Verifica nome if (empty($nome)){ // HTML que aparecera o ERRO echo "<html><head><title>Ocorreu Um ERRO !!!</title></head>"; echo "<body bgcolor=\"#ffffff\">"; echo "<br><br><br>"; echo "<center>É Necessario o Preenchimento do <b>Nome</b></center>"; echo "<br><br><center><a href=\"java script:history.back(1)\">Volta</a></center>"; echo "</body></html>"; } // Verifica o Campo E-mail Tá preenchido elseif (empty($email)){ // HTML que aparecera o ERRO echo "<html><head><title>Ocorreu Um ERRO !!!</title></head>"; echo "<body bgcolor=\"#ffffff\">"; echo "<br><br><br>"; echo "<center>O E-mail não foi <b>Digitado</b></center>"; echo "<br><br><center><a href=\"java script:history.back(1)\">Volta</a></center>"; echo "</body></html>"; } // Verifoca Se o E-mail Contem @ elseif (!(strpos($email,"@")) OR strpos($email,"@") !=strrpos($email,"@")) { // HTML que aparecera o ERRO echo "<html><head><title>Ocorreu Um ERRO !!!</title></head>"; echo "<body bgcolor=\"#ffffff\">"; echo "<br><br><br>"; echo "<center>O E-mail <b>Não</b> é <b>válido</b></center>"; echo "<br><br><center><a href=\"java script:history.back(1)\">Volta</a></center>"; echo "</body></html>"; } // Verifica se o Campo Mensagem tá preenchido elseif (empty($mensagem)){ // HTML que aparecera o ERRO echo "<html><head><title>Ocorreu Um ERRO !!!</title></head>"; echo "<body bgcolor=\"#ffffff\">"; echo "<br><br><br>"; echo "<center>Você <b>Não</b> Digitou Uma <b>Mensagem</b></center>"; echo "<br><br><center><a href=\"java script:history.back(1)\">Volta</a></center>"; echo "</body></html>"; } else{ // Comfirma o Envio Do E-mail if ($certo== "1") { // Função de envio Do E-mail //mail ("riopreto@fazendariopreto.com","nome","string message", "string additional_headers"); mail ("$emaildest","$assunto","Nome:$nome\n Email:$email\n Mensagem:$mensagem\n IP:$REMOTE_ADDR\n\n ...::: Fazenda Rio Preto ® :::...","From:$nome<$email>"); } // HTML do redirecionameto e se não redirecionar aparece um link echo "<html><head>"; echo "<meta http-equiv=\"refresh\" content=\"0;url=$redirecionar\">"; echo "<title>Redirecionado ...</title>"; echo "</head><body bgcolor=\"#ffffff\">"; echo "<a href=\"$redirecionar\" target=\"_top\">Volta Para O Site</a>"; echo "</body></html>"; } ?>[code] config.ini: [/code]<?php $certo="1"; $emaildest="riopreto@fazendariopreto.com"; $redirecionar="validacao.php"; ?>[code] aaahh, o erro que dá ao enviar as informações é o seguinte: PHP Warning: mail() [<a href='function.mail'>function.mail</a>]: Failed to connect to mailserver at "smtp.eb.mil.br" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in E:\home\fesi\web\fazenda\recebe_dados.php on line 83 Vou fornecer a ajuda da locaweb: Por que os e-mails disparados pela função mail() do PHP não chegam ao seu destino? Em alguns casos, os e-mails disparados pela função mail(), do PHP, não chegam ao seu destino. Isto se deve pelo Return-Path dos e-mails não estarem setados. Por padrão o Return-Path é anonymous@hmXX.locaweb.com.br, onde XX é o número do servidor que dispara o e-mail. Para solucionar este problema, basta setar o Return-Path com um e-mail válido de seu domínio. Veja um exemplo sobre envio de e-mails via PHP na seguinte FAQ. Função para Envio de Mensagens Função para Envio de Mensagens Função para Envio de Mensagens mail(); Utilize o exemplo abaixo como referência para uso da função mail(); : <? $headers = "MIME-Version: 1.0\n"; $headers .= "Content-type: text/plain; charset=iso-8859-1\n"; $headers .= "From: eu@dominio.com\n"; $headers .= "Return-Path: eu@dominio.com\n"; mail("destinatario@dominio.com", "Assunto", "Texto", $headers); print "Mensagem enviada com sucesso!"; ?> Obs.: É possível adicionar outros "headers" à função mail(); além do "From:" como por exemplo: Content-type: formato do envio de mensagens, use “text/plain” para texto ou “text/html” para HTML. Cc: envio de cópia das mensagens. Bcc: envio de cópia oculta das mensagens. Reply-To: e-mail que receberá a resposta da mensagem enviada. X-Priority: prioridade da mensagem: 3 é normal, 1 é urgente, 5 é prioridade baixa. Disposition-Notification-To: e-mail que receberá confirmação de leitura (somente se recebido por algum cliente de e-mail, como o Outlook). Importante: - O Return-Path deve ser o mesmo e-mail especificado em From, se ele não for especificado ou for especificado um e-mail diferente, a mensagem pode não chegar no destino por conta do bloqueio de segurança dos servidores de diversos provedores; - O Campo From deve ser um e-mail de seu domínio, do contrário, poderá ter problemas com o recebimento das mensagens também por conta do bloqueio de segurança dos servidores de diversos provedores; - O Campo Reply-To é ideal para formulários que tem como função enviar e-mail para uma caixa postal sua (@dominio.com), pois quando se responde, o destinatário será o e-mail do visitante. Se usar o e-mail do visitante no campo From, a mensagem poderá ser barrada por conta do tópico acima. - Não é necessário o uso de Reply-To quando se deseja usar o script para enviar um e-mail para o visitante, o próprio campo From, neste caso, será utilizado como e-mail a ser respondido. • Problemas de envio de e-mails em PHP em hospedagens Windows: Talvez você se depare com o erro a seguir: "Warning: mail() [function.mail]: SMTP server response: 501 5.5.4 Invalid Address in . . ." Isso ocorre quando você tenta enviar e-mails no formato [nome<e-mail@dominio.com>], neste caso, o envio de e-mails em Windows é somente no formato [e-mail@dominio.com], sem "<" e ">". Nenhum dos campos, neste caso, poderão ser especificados no formato [nome<e-mail@dominio.com>] (From, To, Cc, Bcc, Reply-To, Return-Path). Em hospedagens Linux e, em planos de Revenda (Windows ou Linux), você não terá este tipo de problema pois nos servidores Windows compartilhados está instalado o “MSsmtpsvc” e na revenda Windows está instalado outro serviço, o Merak, que tem este tipo de suporte, ao qual não dispomos em hospedagem compartilhada por conta da diferença estrutural de ambos. • Enviando Mensagens em HTML Usando a Função mail(); O exemplo abaixo destina-se ao uso da função mail(); para envio de mensagens no formato HTML <? /* Destinatário */ $to = "destinatario@dominio.com" . ", " ; $to .= "destinatario2@dominio.com"; /* Assunto */ $subject = "Teste Locaweb!"; /* Mensagem */ $message = ' <html> <head><title>http://www.LOCAWEB.com.br!</title></head> <body> <p>Esse email é um teste enviado no formato HTML via PHP mail();!</p> <table> <tr> <th bgcolor="#FF6666">Locaweb</th><th bgcolor="#0099FF">Locavoz</th><th bgcolor="#FFFFCC">Locamail</th> </tr> <tr> <td align="center">Sites!</td><td align="center">Voz!</td><td align="center">Emails!</td> </tr> </table> </body> </html> '; $headers = "MIME-Version: 1.0\n"; $headers .= "Content-type: text/html; charset=iso-8859-1\n"; $headers .= "From: eu@dominio.com\n"; $headers .= "Cc: copia@dominio.com\n"; $headers .= "Bcc: copia2@dominio.com\n"; $headers .= "Return-Path: eu@dominio.com\n"; /* Enviando a mensagem */ mail($to, $subject, $message, $headers); print "Mensagem Enviada com Sucesso!"; ?> Obs: É importante a utilização do header "Return-Path" para receber o retorno das mensagens e identificar mais rapidamente as falhas no envio. Como eu faço um redirecionamento utilizando PHP, HTML ou ASP? Como eu faço um redirecionamento utilizando PHP, HTML ou ASP? - Em PHP você pode utilizar o código abaixo: <?header("location: pagina.php");?> - Em HTML utilize o código abaixo: <meta http-equiv="refresh" content="7;url=http://www.dominio/pagina.htm"> onde 7 é o número de segundos antes de abrir a url. - Em ASP use o código abaixo: <% Response.Redirect "http://www.dominio.com.br" %> • PHP em plataforma Windows PHP em plataforma Windows Os planos de Hospedagem Compartilhada Windows da LocaWeb possuem suporte ao PHP 5. A combinação PHP com MySQL oferece o desempenho e flexibilidade que antes só estavam disponíveis em uma Hospedagem Linux. É possível verificar o valor atual das diretivas do PHP criando um arquivo phpinfo(), como no exemplo abaixo: <?php phpinfo(); ?> As instruções sobre o significado de cada diretiva podem ser obtidas na documentação online do PHP, disponível no site PHP.net. Pessoal eu sei que ficou enormeeeee, mas eu precisava falar neh..pelo menos está tudo detalhado. =] Podem me ajudar por favor, eu acho que não deve ser difícil para quem sabe. Obrigada Nossa ficou enormeee..se algum moderador não gostar , pr favor suspende e me dá um toque por MP..eu procurarei resolver de outra maneira Obrigada novamente Soh coloqeui pq achei necessário. Compartilhar este post Link para o post Compartilhar em outros sites
visitante_php 0 Denunciar post Postado Janeiro 19, 2008 ficou enorme sim, mas tipo, tenta fazer o include, com require cinfig.ini.php talves nao inclui o arquivo por causa da extensao, verifica ae... Compartilhar este post Link para o post Compartilhar em outros sites
Marcio Leandro 0 Denunciar post Postado Janeiro 19, 2008 Bom, não entendi bem "aonde" ou "qual" é o seu problema. Verifique se o e-mail está sendo enviado ou não. Caso não esteja, o problema se deve a um problema com a versão de SMTP (tive problemas também com o smtp da locaweb) e políticas anti-spam. 1) No meu caso, o smtp não aceitava quebras de linha no conteúdo da mensagem. Isto é um bug da versão do smtp. A maioria das versões já corrigiram isso, sendo que a atualização do SMTP resolveria este problema. Parece que o bug ocorre apenas em servidores Windows, porque não tive problema com nenhuma hospedagem Linux. 2) Verifique também se o email indicado em 'From' (e talvez 'Reply-to' também) pertence ao seu domínio. Caso contrário o smtp rejeitará o envio da mensagem, em acordo com a política anti-spam. Compartilhar este post Link para o post Compartilhar em outros sites