Tela branca, sem resposta - PHP
11/05/2016
0
Seguinte, fiz um código em PHP para receber uma lista de 4 itens (nome, telefone, dia da consulta e horário da consulta) para uma clínica médica, onde aparentemente tudo era pra estar funcionando. Hospedei tudo num site e fui fazer o teste, no entanto, na hora de clicar em "Enviar", o site redireciona para uma página em branco e o "formulário" não é enviado ao meu e-mail, alguém saberia me dizer o por quê?
Obrigado!
<?php if(isset($_POST['email'])) { // e-mail de destino $email_to = "grxgabriel@gmail.com"; $email_subject = "Agendamento de consulta"; function died($error) { // Código do erro echo "Alguns erros foram encontrados: "; echo $error."<br/>"; die(); } // validation expected data exists if ( !isset($_POST['name']) || !isset($_POST['phone']) || !isset($_POST['dia']) || !isset($_POST['hora']) ) { died('Erro inesperado'); } else { $name = $_POST['name']; // obrigatório $phone = $_POST['phone']; // obrigatório $dia = $_POST['dia']; // obrigatório $hora = $_POST['hora']; // obrigatório } $string_exp = " /^[A-Za-z .'-]+$/ "; $string_exp2 = "012345679 () - /"; if(!preg_match($string_exp,$home)) { $error_message .= 'Nome inválido. <br/>'; } if(!preg_match($string_exp2,$phone)) { $error_message .= 'Telefone inválido. '; } if(strlen($error_message) > 0) { died($error_message); } $email_message = "Detalhes abaixo.\n\n"; function clean_string($string) { $bad = array("content-type","bcc:","to:","cc:","href"); return str_replace($bad,"",$string); } $email_message .= "Nome: ".clean_string($name)."\n"; $email_message .= "Telefone: ".clean_string($phone)."\n"; $email_message .= "Dia da consulta: ".clean_string($dia)."\n" $email_message .= "Horário da consulta: ".clean_string($hora)."\n"; // Corpo do e-mail $headers = 'From: '.$nome."\r\n". 'Reply-To: '.$name."\r\n" . 'X-Mailer: PHP/' . phpversion(); @mail($email_to, $email_subject, $nome, $phone, $dia, $hora, $headers); ?> <!-- include your own success html here --> $echo = "Enviado com sucesso! \n Logo entraremos em contato!"; <?php } ?>
Gabriel
Posts
11/05/2016
Rodolfo Alves
nessa linha tire o @ e faça um teste, nao tenho certeza se é isso!
@mail($email_to, $email_subject, $nome, $phone, $dia, $hora, $headers);
deixe assim
mail($email_to, $email_subject, $nome, $phone, $dia, $hora, $headers);
Depois fala se era isso...
11/05/2016
Raylan Zibel
?> <!-- include your own success html here --> $echo = "Enviado com sucesso! \n Logo entraremos em contato!"; <?php } ?>
Parece errado. Tem uma varivável PHP recebendo valor, só que fora do bloco PHP. Verifique.
11/05/2016
Gabriel
Realmente, o @ é pra verificação de mensagens de erro pelo que li, por isso o coloquei ali.
E a sintaxe final estava totalmente errada, corrigi o } e ele "funcionou", tentei e ele deu alguma resposta, disse que o "Nome estava inválido", no entanto, era falha do código, corrigi e novamente ele voltou a ficar na tela branca. Não sei o que possa ser. ):
#Edit
<?PHP // Coloque a mensagem que irá ser enviada para seu e-mail abaixo: $data = "Mensagem enviada em ".date("d/m/Y").", dados abaixo:\n\n"; $name = $_POST['name']; // Agora iremos fazer com que o PHP envie os dados do formulário para seu e-mail: mail("grxgabriel@gmail.com", "Agendamento de consulta", $data, "From: $REMOTE_ADDR"); echo "Seu e-mail foi enviado com sucesso. Obrigado"; ?>
11/05/2016
Gabriel
12/05/2016
Marlon Gera
if(!preg_match($string_exp,$home))
A Variavel $home não está pre determinada na pagina que você mandou.
e como ja foi dito o
$echo = "Enviado com sucesso! \n Logo entraremos em contato!";
Estava fora do PHP.
e não entendi para que você está usando esta parte do código se não esta chamando pelo e-mail.
$email_message .= "Nome: ".clean_string($name)."\n"; $email_message .= "Telefone: ".clean_string($phone)."\n"; $email_message .= "Dia da consulta: ".clean_string($dia)."\n" $email_message .= "Horário da consulta: ".clean_string($hora)."\n";
Espero ter ajudado :)
12/05/2016
William
Olá Gabriel, eu sempre peço para o pessoal do fórum ler a documentação oficial da plataforma que estão desenvolvendo e tendo dúvidas, no seu caso da quantidade de parâmetros fica evidente que a função nativa "mail()" não aceita essa quantidade de parâmetros que você está tentando passar no código inicial.
[url:descricao=Documentação função mail()]http://php.net/manual/pt_BR/function.mail.php[/url]
mail($email_to, $email_subject, $nome, $phone, $dia, $hora, $headers);
Clique aqui para fazer login e interagir na Comunidade :)