Ir para conteúdo

Arquivado

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

Zoação

Formulário PHP (problemas na acentuação)

Recommended Posts

Criei um formulário simples em PHP que envia os dados de um formulário diretamente para um endereço de e-mail, porém sempre que estes dados chegam, todo caracter que possui acentuação chega errado, vejam o exemplo:

 

Enviado: "áéúíõô"

Recebido: "??????"

 

O que preciso e colocar e como no arquivo PHP para então corrigir este erro?

 

Obrigado!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal,

Não entendi... afinal está chegando assim em meu e-mail ... e não um arquivo que tenho no pc.

 

Sempre que alguém preenche os dados nos campos de um formulário que criei em html com chamada para php, os mesmos ao serem enviados, vão desta forma ... e não com acentuação correta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Continuou sem entender ... afinal isto chega em minha caixa postal online e não é nenhum programa instalado em meu computador.

 

Por tanto, sempre que eu recebo um e-mail, ao abrir minha caixa postal online (sem uso de programa no pc) fica assim.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Configure a codificação de caracteres para UTF-8 em todo a sua aplicação inclussivel no cabeçalho do e-mail.

 

 

http://www.php.net/manual/pt_BR/function.mail.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este é o código PHP :

------------------- INÍCIO DO CÓDIGO ---------------------------------

<?php
$nome = $_POST["nome"];
$email = $_POST["email"];
$mensagem .= "Nome: $nome\n";
$mensagem .= "E-mail: $email\n\n";
mail("meuenderecodeemail@yahoo.com.br", "CadastroNews", $mensagem, "From: $email");
echo "<h3><center> Obrigado! Seu cadastro foi realizado com sucesso!!!<center></h3>\n\n";
?>

--------------- FIM DO CÓDIGO ----------------------------------------

Compartilhar este post


Link para o post
Compartilhar em outros sites

Solução simples, depurando o código.

01º. Passo: Na página principal do formulário deverá haver a cabeçalho/header no seguinte padrão.

 

formulario.php

 

<?php
header('Content-Type: text/html; charset=utf-8');
?>
<html>
      <head>
            <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
      </head>
      <body>
            <form name="contato">
                  <input type="text" name="nome" />
                  <input type="text" name="idade" />
            </form>
      </body>
</html>

 

 

02º Passo: Na tela onde irá receber e processar os posts enviados deverá conter a seguinte header você pode receber direto

 

<?php
      header('Content-Type: text/html; charset=utf-8');
      $nome = $_POST['nome'];
      $idade = $_POST['idade'];
?>

 

ou decodificando com a função utf8_decode nativa do php

 

<?php
      header('Content-Type: text/html; charset=utf-8');
      $nome = utf8_decode($_POST['nome']);
      $idade = utf8_decode($_POST['idade']);
?>

Segue abaixo um exemplo mais extenso recebendo os formulário utilizando um objeto

 

        $formulario = new Formulario();
        $diaSemana = array('Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado');
        $numDia = date('w');
        $diaExtenso = $diaSemana[$numDia];
        $data = date('d/m/y');
        $hora = date('H:i');
        $ip = getenv('REMOTE_ADDR');
        $to = "{$formulario->departamento}@seuemail.com";  // INSIRA AQUI O ENDEREÇO DO DESTINATÁRIO, E-MAIL VÁLIDO DE SEU DOMONÍO

        $html = '<html>
                     <head>
                        <title>MENSAGEM</title>
                        <style type="text/css">
                            body                    {   font-family: verdana;
                                                        margin: 0;
                                                        color: black;
                                                        font-size: 12px;
                                                        text-align: left;
                                                    }
                            #MENSAGEM .titulo       {color: #38596E; font-size: 18px}
                            #MENSAGEM .mensagem     {text-align: justify; font-size: 14px;}
                            #MENSAGEM a             {text-decoration: none;}
                            #MENSAGEM a:hover       {text-decoration: none; color: black;}
                        </style>
                        </head>
                        <body>
                        <fieldset id="MENSAGEM">
                            <legend style="color: #cc3300; font-size: 25px; margin: 10px; padding-left: 10px; padding-right: 10px">
                                CONTATO <img src="contact1.png" alt="mail" style="vertical-align: middle; width: 50px; height: 50px;"/>
                            </legend>
                            <fieldset>
                                <legend class="titulo">
                                    CABEÇALHO
                                </legend>
                                <p>
                                    DEPARTAMENTO: <font color="red">Atendimento</font>
                                </p>
                                <p>
                                    ASSUNTO: <font color="red">'.$formulario->assunto.'</font>
                                </p>
                            </fieldset>
                            <br />
                            <fieldset>
                                <legend class="titulo">
                                    INFORMAÇÕES
                                </legend>
                                <p> NOME: '.$formulario->nome.' </p>
                                <p> ENDEREÇO: '.$formulario->endereco.' -  '.$formulario->cidade.' / '.$formulario->estado.'</p>
                                <p> CEP: '.$formulario->cep.' </p>
                                <p> TELEFONE: ('.$formulario->ddd.') '.$formulario->telefone.'</p>
                                <p> E-MAIL: '.$formulario->email.'</p>
                            </fieldset>
                            <br />
                            <fieldset>
                                <legend class="titulo">
                                    MENSAGEM
                                </legend>
                                <p class="mensagem">
                                    '.nl2br($formulario->mensagem).'
                                </p>
                                <br />
                                <p style="color:gray; font-size: 10px; border: 1px dashed gray; padding-left: 10px;">
                                    Mensagem pode vir formatada com uso de TAG's: <b> Texto </b> <i> Texto </i> <s> Texto </s> <cite> Text </cite> <span style="color:red;"> Texto </span>
                                </p>
                            </fieldset>
                            <br />
                            <fieldset class="discreto">
                                <legend class="titulo">
                                    DETALHES
                                </legend>
                                <p>DATA: '.$diaExtenso.', dia '.$data.' as '.$hora.'</p>
                                <p>IP: '.$ip.'</p>
                            </fieldset>
                            <br />
                        </fieldset>
                    </body>
                </html>';
        
        $headers  = 'MIME-Version: 1.0' . "\r\n";
        $headers .= 'Content-type: text/html; charset=ISO-8859-1' . "\r\n";
        $headers .= 'Bcc: @seuemail.com' . "\r\n";
        $headers .= 'Return-Path: '.$formulario->email. "\r\n"; // return-path
        $headers .= 'From: '.$formulario->email. "\r\n";
        $headers .= 'Reply-To: '.$formulario->email. "\r\n";
        if($formulario->departamento != 'atendimento'){
            $headers .= 'Cc: @seuemail.com' . "\r\n";
        }         
        if(mail($to, "Contato formulário site: $formulario->assunto", $html, $headers)){
            Message::messageUIDialog('message', 'Sucesso', 'Mensagem enviada com sucesso.');
            echo "<script type='text/javascript'>$(function(){ $('#idFContato').reset(); });</script>";
            return true;
        }else{
            Message::messageUIDialog('message', 'Falha', 'Erro');
            return false;
        }
        
    }

Compartilhar este post


Link para o post
Compartilhar em outros sites

já tentou o utf8_encode???

 

<?php
$nome = utf8_encode($_POST["nome"]);
$email =  utf8_encode($_POST["email"]);
$mensagem .=  utf8_encode("Nome: $nome\n");
$mensagem .=  utf8_encode("E-mail: $email\n\n");
mail("meuenderecodeemail@yahoo.com.br", "CadastroNews", $mensagem, "From: $email");
echo "<h3><center> Obrigado! Seu cadastro foi realizado com sucesso!!!<center></h3>\n\n";
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro Vinicius,

 

Não consegui entender sua dica, afinal ao que entendi você esta dizendo para abrir um programa no computador, seria isto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso, notepad++ é um editor de texto e usado para programar.

 

um dos recursos dele é trocar o enconding do arquivo, que no seu caso esta errado. 90% de chance do seu erro estar em relação a isso.

 

não conheço nenhum outro programa que faça isso, o notepad tem 16 MB.

baixa e faça o que falei.

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.