12
respostas

Erro na página "Contato"

Realizei as mudanças no cabecalho e criei o arquivo contato (abaixo), mas quando clico em "Contato" na página é apresentado o seguinte erro na linha 3:

( ! ) Parse error: syntax error, unexpected 'envia' (T_STRING) in C:\wamp64\www\loja\contato.php on line 3

<?php require_once("cabecalho.php); ?>

<form action="envia-contato.php" method="post">

    <table class="table">
        <tr>
            <td>Nome</td>
            <td><input type="text" name="nome" class="form-control"></td>
        </tr>
        <tr>
            <td>Email</td>
            <td><input type="email" name="email" class="form-control"></td>
        </tr>
        <tr>
            <td>Mensagem</td>
            <td><textarea class="form-control" name="mensagem"></textarea></td>
        </tr>
        <tr>
            <td><button class="btn btn-primary">Enviar</button></td>
        </tr>
    </table>
</form>

<?php require_once("rodape.php"); ?>
12 respostas

Alguém se arrisca?

Oi, chadu. Acho que o erro é porque faltou fechar as aspas lá na primeira linha

"cabecalho.php);

tem que ser

"cabecalho.php");

Fora isso tem também o button que precisa ter o type="submit" também.

 <td><button type="submit" class="btn btn-primary">Enviar</button></td>

Ótimo! Conseguimos colocar o formulário pra roda!

Só não estou recebendo o e-mail...

segue o código: envia-contato.php

<?php
session_start();
$nome = $_POST["nome"];
$email = $_POST["email"];
$mensagem = $_POST["mensagem"];

require_once("PHPMailerAutoload.php");

$mail = new PHPMailer();
$mail->isSMTP();
$mail->Host = 'stmp.gmail.com';
$mail->Port = 587;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
$mail->Username = "charlesbrasilia@gmail.com";
$mail->Password = "********";

$mail->setFrom("charlesbrasilia@gmail.com", "C.Brasilia");
$mail->addAddress("charlesbrasilia@gmail.com");
$mail->Subject = "Contato do Site";
$mail->msgHTML("<html>de: {$nome}<br/>email:{email}<br/>mensagem: {$mensagem}</html>");
$mail->AltBody = "de: {nome}\nemail:{$email}\nmensagem:{$mensagem}";

if($mail->send()) {
    $_SESSION["success"] = "Mensagem enviada com sucesso";
    header("Location: index.php");
} else {
    $_SESSION["danger"] = "Erro ao enviar mensagem " . $email->Errorinfo;
    header("Location: contato.php");
}
?>

Parece certo também. Você configurou o gmail para aceitar conexão smtp?

E mostra alguma mensagem de erro?

Não realizei nenhuma configuração do painel de controle do gmail, este detalhe não foi passado na aula.

A única mensagem de erro é da nossa aplicação "Erro ao enviar mensagem"

Isso também ocorreu comigo, sem sucesso..

Então precisa configurar o gmail para aceitar que você acesse por smtp "menos seguro" (tem uma opção que diz mais ou menbos isso na parte de segurança.. nao me lembro exatamente até porque isso muda de lugar constantemente). mas se nao habilitar não vai funcionar mesmo.

O meu funcionou quando desabilitei na minha conta google a Verificação em duas etapas.

Srs.

O erro continua e o e-mail não tem verificação em duas etapas.

Chadu, mas precisa al[em disso, estar habilitado para usar conexões smtp em aplicações "menos seguras". Aqui explica um pouco sobre isso: https://support.google.com/accounts/answer/6010255?hl=en

E acho que este link (retirado do link acima) vai te levar para a opção de configuração relevante: http://www.google.com/settings/security/lesssecureapps

Você esqueceu de colocar o cifrão em algumas variáveis, em:

$mail->msgHTML("<html>de: {$nome}<br/>email:{email}<br/>mensagem: {$mensagem}</html>");
$mail->AltBody = "de: {nome}\nemail:{$email}\nmensagem:{$mensagem}";

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software