2
respostas

Criando um formulário de contato

Notice: Undefined index: nome in C:\xampp\htdocs\2tinformatica.com.br\Formulario_de_Contato\index.php on line 4

Quando executo o código abaixo tenho o seguinte erro de cima, teria como me ajudarem?

<?php 
include "funcao.php";

if(strlen($_POST['nome']))
{
    if(sendMail($_POST['email'],'2tinformatica@gmail.com', $_POST['mensagem'], 'Formulário de contato'))
    {
        echo "Sua mensagem foi enviada com sucesso!";
    }
    else
    {
        echo "Ocorreu um erro ao enviar sua mensagem Ligue para (84) 3061-0686";
    }
    echo "<br><a href='index.php'>Voltar</a>";
    exit();
}
?>
<!DOCTYPE html>
<html>
<head>
    <title>Formulário para contato</title>
    <meta charset="utf-8">
    <link rel="stylesheet" href="style.css" type="text/css" media="all" />
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>
<body>
    <h2>Formulário de contato</h2>

    <form method="post" id="formulario_contato" onsubmit="validaForm(); return false;" class="form">
        <p class="name">
            <label for="name">Nome</label>
            <input type="text" name="nome" id="nome" placeholder="Seu Nome" />
        </p>

        <p class="email">
            <label for="email">E-mail</label>
            <input type="text" name="email" id="email" placeholder="mail@exemplo.com.br" />
        </p>        

        <p class="text">
            <label for="mensagem">Mensagem</label>
            <textarea name="mensagem" id="mensagem" placeholder="Escreva sua mensagem" /></textarea>
        </p>

        <p class="submit">
            <input type="submit" value="Enviar" />
        </p>
    </form>
    <script type="text/javascript">
        function validaForm()
        {
            erro = false;
            if($('#nome').val() == '')
            {
                alert('Você precisa preencher o campo Nome');erro = true;
            }
            if($('#email').val() == '' && !erro)
            {
                alert('Você precisa preencher o campo E-mail');erro = true;
            }
            if($('#mensagem').val() == '' && !erro)
            {
                alert('Você precisa preencher o campo Mensagem');erro = true;
            }

            //se nao tiver erros
            if(!erro)
            {
                $('#formulario_contato').submit();
            }
        }
    </script>
</body>
</html>
2 respostas

Utilize o isset no lugar desse strlen.

if (isset($_POST['nome'])){
    // resto do código
}

Aparente o POST não possuí o índice "nome", ou seja, não foi enviado nenhum valor para um input de name "nome" via post.

Para verificar se existe um valor em uma array, como o $_POST, utilize a função empty ou isset do php.

Aparentemente você está realizando um post para a própria página do formulário, pelo que entendi do seu código, correto? Eu não recomento que faça isso, pois é uma má prática, você começa a acumular muita lógica em um lugar só e, com o tempo, fica difícil entender e debugar o código. Recomendo que faça o POST para outro arquivo, o qual faz a lógica do envio e depois redireciona para a página que deseja.

Espero ter ajudado :D