Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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>
recebe_dados.php:
<?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>";
}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>";
}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>";
}//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>";
}
?>
config.ini:
<?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;
• 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!](http://www.LOCAWEB.com.br!)
<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?
<?header("location: pagina.php");?>
<meta http-equiv="refresh" content="7;url=http://www.dominio/pagina.htm">
onde 7 é o número de segundos antes de abrir a url.
<%
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.
Carregando comentários...