Fórum Tela branca, sem resposta - PHP #553807
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
Curtir tópico
+ 1Posts
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...
Gostei + 0
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.
Gostei + 0
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";
?>Gostei + 0
11/05/2016
Gabriel
Gostei + 0
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 :)
Gostei + 0
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);
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)