Ir para conteúdo

POWERED BY:

Arquivado

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

Luàs Henrique M Paulo

Formulário de contato

Recommended Posts

Olá srs.

Em primeiro lugar preciso dizer que sou absolutamente ignorante em termos de programação. Sou um publicitário que começou a desenvolver web sites por pura necessidade de atender aalgumas demandas.

 

Com isso, procurei por alguma ferramenta que eu conseguisse entender e acabei por me dar bem com o WebBuilder, da Pablo Software.

 

Com esse soft já construí diversos sites para clientes, todos no ar e funcionando. O único que não está funcionando direito de uns dias pra cá é o meu. O formulário de contato, montado em PHP com uma ferramenta interna ao WebBuilder, parou de funcionar no dia 17/01. Meu site está hospedado no Uol Host e saiu do ar no dia 16. Quando voltou, no dia seguinte, o form não funcionava.

 

O Suporte do Uol insiste que o problema está no código do form ( que funcionava direito desde 2009...) e me sugerem um código que em muitos fóruns ja li reclamaçōes de que não funciona.

 

Alguém já pasou por isso? Alguma ideia do que pode ter ocorrido após essa saída do ar?

 

Não sei programar/escrever códigos. Uso sempre o "form wizard" do WebBuilder...

Compartilhar este post


Link para o post
Compartilhar em outros sites

A "caída de servidor" pode ter sido causada por atualização. Como você mesmo citou, o script que está online hoje já tem 4 anos.

 

Veja se você não consegue atualizar, primeiro o webBuilder e gerar uma nova versão do formulário.

 

Para que nós possamos te ajudar, precisamos de algumas poucas, mas importantes, informações.

 

Informações estas incluem, mas não se limitam a:

(ordenados por relevância)

- Código em PHP que está com problemas

- Mensagens de erro tanto do PHP quanto do Servidor Web/FTP/SMTP/SSH que for

- Sistema Operacional

- Servidor Web

- Hospedagem (que já foi citado como UOL Host)

 

É um ponto de partida. Note que é muito mais simples ajudar a resolver um problema quando conseguimos reproduzí-lo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Evandro.

Obrigado pela orientação.

 

O meu WebBuilder está atualizado e o form de contato foi atualizado também no final do ano passado (e estava funcionando até o dia 16 de janeiro).

 

O código do formulário é o abaixo:

 

 

<?php
function ValidateEmail($email)
{
$pattern = '/^([0-9a-z]([-.\w]*[0-9a-z])*@(([0-9a-z])+([-\w]*[0-9a-z])*\.)+[a-z]{2,6})$/i';
return preg_match($pattern, $email);
}
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
$mailto = 'ophcom@uol.com.br';
$mailfrom = isset($_POST['email']) ? $_POST['email'] : $mailto;
$subject = 'Contato via Ophicina';
$message = 'Contato via Ophicina';
$success_url = './obrigado_contato.html';
$error_url = '';
$error = '';
$eol = "\n";
$max_filesize = isset($_POST['filesize']) ? $_POST['filesize'] * 1024 : 1024000;
$boundary = md5(uniqid(time()));
$header = 'From: '.$mailfrom.$eol;
$header .= 'Reply-To: '.$mailfrom.$eol;
$header .= 'MIME-Version: 1.0'.$eol;
$header .= 'Content-Type: multipart/mixed; boundary="'.$boundary.'"'.$eol;
$header .= 'X-Mailer: PHP v'.phpversion().$eol;
if (!ValidateEmail($mailfrom))
{
$error .= "The specified email address is invalid!\n<br>";
}
if (!empty($error))
{
$errorcode = file_get_contents($error_url);
$replace = "##error##";
$errorcode = str_replace($replace, $error, $errorcode);
echo $errorcode;
exit;
}
$internalfields = array ("submit", "reset", "send", "captcha_code");
$message .= $eol;
$message .= "IP Address : ";
$message .= $_SERVER['REMOTE_ADDR'];
$message .= $eol;
foreach ($_POST as $key => $value)
{
if (!in_array(strtolower($key), $internalfields))
{
if (!is_array($value))
{
$message .= ucwords(str_replace("_", " ", $key)) . " : " . $value . $eol;
}
else
{
$message .= ucwords(str_replace("_", " ", $key)) . " : " . implode(",", $value) . $eol;
}
}
}
$body = 'This is a multi-part message in MIME format.'.$eol.$eol;
$body .= '--'.$boundary.$eol;
$body .= 'Content-Type: text/plain; charset=ISO-8859-1'.$eol;
$body .= 'Content-Transfer-Encoding: 8bit'.$eol;
$body .= $eol.stripslashes($message).$eol;
if (!empty($_FILES))
{
foreach ($_FILES as $key => $value)
{
if ($_FILES[$key]['error'] == 0 && $_FILES[$key]['size'] <= $max_filesize)
{
$body .= '--'.$boundary.$eol;
$body .= 'Content-Type: '.$_FILES[$key]['type'].'; name='.$_FILES[$key]['name'].$eol;
$body .= 'Content-Transfer-Encoding: base64'.$eol;
$body .= 'Content-Disposition: attachment; filename='.$_FILES[$key]['name'].$eol;
$body .= $eol.chunk_split(base64_encode(file_get_contents($_FILES[$key]['tmp_name']))).$eol;
}
}
}
$body .= '--'.$boundary.'--'.$eol;
mail($mailto, $subject, $body, $header);
header('Location: '.$success_url);
exit;
}
MENSAGENS DE ERRO: não há mensagem de erro!! Ao realizar testes de envio, preencho o form e ao clicar em enviar sou remetido corretamente à página de "sucesso". Só que o e-mail não chega...
O sistema operacional é Windows Vista em minha máquina e o web site está numa plataforma Windows Server 2008 do UOL Host.
É isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos lá. Primeiro de tudo, desculpe-me pela demora.

Seu script não tem erros sintáticos, está tudo escrito corretamente.

Fiz uma ligeira modificação ao final dele:

if (!empty($_FILES))
        {
            foreach ($_FILES as $key => $value)
            {
                if ($_FILES[$key]['error'] == 0 && $_FILES[$key]['size'] <= $max_filesize)
                {
                    // Conteúdo removido para manter a brevidade do post
                }
            }
        }
        $body .= '--'.$boundary.'--'.$eol;
        if (!mail($mailto, $subject, $body, $header)) {
            die('Não foi possível enviar o email');
        }
        header('Location: '.$success_url);
        exit;


Caso você não esteja apto a enviar emails pela API padrão do PHP, você verá na tela a mensagem: [inline]Não foi possível enviar o email[/inline]

Caso você não veja esta mensagem, uma forma de tentar depurar os erros segue abaixo

<?php

const WRITABLE_PATH = ''; // Insira um caminho onde possamos salvar arquivos

$log_file = WRITABLE_PATH . '/errors.log';

touch($log_file) or die('não é possível gravar os erros.');

ini_set('error_log', $log_file);

error_log('teste de log de erros');

if (!mail('para@email.com', 'assunto', 'mensagem de teste')) {
    die('Não foi possível enviar o email. Verifique o motivo em '. $log_file);
};

echo 'Email enviado corretamente';


Qualquer erro reportado deve ser encaminhado à sua hospedagem para solução.

Caso ainda assim não haja mensagem de erro alguma, sugiro que utilize uma forma alternativa de enviar emails. Há diversos códigos prontos disponíveis gratuitamente para este fim, você precisará pesquisar um pouco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tava olhando essa sua funçao aqui:

 

<?php
   function ValidateEmail($email)
   {
      $pattern = '/^([0-9a-z]([-.\w]*[0-9a-z])*@(([0-9a-z])+([-\w]*[0-9a-z])*\.)+[a-z]{2,6})$/i';
      return preg_match($pattern, $email);
   }

 

Em meus sistema eu uso , um funçao Nativa do Php, e fica assim:

 

 

<?php
$email = 'teste@hotmail.com';
if(filter_var($email, FILTER_VALIDATE_EMAIL)){

 echo 'E-mail válido'; 

}else{

 echo 'E-mail invalido';

 }

 ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tentou verificar se o servidor SMTP está ativo e habilitado para uso?

 

Boa sorte.

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.