Olá Pessoal,
Hoje vamos aplicar algumas das funções para tratamento de string em um exercício simples de validação de formulários. Lembrando que o foco aqui é aplicar e compreender as funções listadas anteriormente. Não vamos atentar aos pormenores da validação de formulário (faremos isso posteriormente, quando estudarmos um pouquinho de segurança). O exercício será composto de um código comentado linha à linha, portanto leiam com atenção e aproveitem:
FORM.PHP
1 2 3 4 5 6 7 8 | <form action="validaForm.php" method="post"> <label for="nome">Nome: <input type="text" name="nome" id="nome" /></label> <label for="email">E-mail: <input type="text" name="email" id="email" /></label> <label for="telefone">Telefone: <input type="text" name="telefone" id="telefone" maxlength="13" /></label> <label for="assunto">Assunto: <input type="text" name="assunto" id="assunto" /></label> <label for="mensagem">Mensagem: <textarea name="mensagem" id="mensagem"></textarea></label> <button type="submit">ENVIAR</button> </form> |
VALIDAFORM.PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | <?php //Trato os campos que o usuário digitou: retiro as tags com stripslashes(), e converto os caracteres especiais para um formato HTML com htmlentities() $nome = htmlentities(strip_tags($_POST["nome"]), ENT_QUOTES); $email = htmlentities(strip_tags($_POST["email"]), ENT_QUOTES); $telefone = htmlentities(strip_tags($_POST["telefone"]), ENT_QUOTES); $assunto = htmlentities(strip_tags($_POST["assunto"]), ENT_QUOTES); $mensagem = strip_tags(htmlentities($_POST["mensagem"], ENT_QUOTES), "<a><p><h1><h2><h3><h4><h5><h6>"); //Monto a mensagem do email - Os campos a serem preenchidos e enviados pela função mail() $msg = "<h1>Formulário de Contato</h1><p>O usuário $nome, enviou a seguinte mensagem:</p><p>$mensagem</p>Telefone: $telefone<br />Email: $email"; $headers = "From: 3dm.digital@gmail.com \n"; $headers .= "Cc: utibrasil@ig.com.br \n"; $headers .= "Bcc: luizcf2001@hotmail.com \n"; $headers .= "Reply-To: diego@diegomarques.com \n"; $headers .= "Content-type: text/html; charset=UTF-8"; //Edito o email - Verifico se existe o caractere @ no email digitado pelo usuário, com a função strpos(), lembrem-se que ela me retornará a posição de @ dentro da string maior $posicao = strpos($email, "@"); //Monto uma substring a partir do email digitado pelo usuário com todo o conteúdo após @ (obti a posição de @ na linha acima) $emailPeq = substr($email, $posicao, strlen($email) - $posicao); //Edito o telefone - Pego o tamanho da string $foneLen = strlen($telefone); //Vejo se algum campo está if (($nome == "") || ($email == "") || ($telefone == "") || ($assunto == "") || ($mensagem == "")) { header("Location: form.php?msg=vazio"); } else { //Verifico se o usuário inseriu @ no email, e se a substring com o resto do email possui o caracter "." if ($posicao == false || strpos($emailPeq, ".") == false) { header("Location: form.php?msg=email"); } //Verifico se o usuário digitou 13 caracteres no campo telefone, e se existem os caracteres (, ) e - nas posições correspondentes ao formato (XX)XXXX-XXXX else if ($foneLen <> 13 || strpos($telefone, "(") <> 0 || strpos($telefone, ")") <> 3 || strpos($telefone, "-") <> 8) { header("Location: form.php?msg=fone"); } else { //Envio o email caso os dados estejam todos Ok $mail = mail("teste@rj.senac.br", $assunto, $msg, $headers); if ($mail == true) { echo "Email enviado com sucesso"; } else { echo "Email não enviado"; } } } ?> |
E aí? Que tal fazer você também uma pequena validação e melhorar esse código? É um bom desafio.