Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the ultimate-addons-for-gutenberg domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /sites/danielkossmann.com/files/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the hustle domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /sites/danielkossmann.com/files/wp-includes/functions.php on line 6114
Como utilizar sanitize_email() e is_email() no WordPress (PHP) - Daniel Kossmann

Com a função PHP sanitize_email() você remove todos os caracteres inválidos de um e-mail. Veja abaixo alguns exemplos:

<?php
$email = "nome@dominio.com.br!";
$email_corrigido = sanitize_email( $email );
// Valor de $email_corrigido será: nome@dominio.com.br

$email = "  nome@dominio.com.br         ";
$email_corrigido = sanitize_email( $email );
// Valor de $email_corrigido será: nome@dominio.com.br (sem espaços)

$email = "nome@dominio";
$email_corrigido = sanitize_email( $email );
// Valor de $email_corrigido será: (vazio)

$email = "nomedominio.com.br";
$email_corrigido = sanitize_email( $email );
// Valor de $email_corrigido será: (vazio)Code language: PHP (php)

Já a função PHP is_email() faz uma verificação básica se o conteúdo é um e-mail ou não, retornando o e-mail caso for verdadeiro e false caso não for um e-mail. É importante salientar que não é verificado se o endereço de e-mail existe ou não, somente se o formato dos caracteres na string fornecida segue o formato básico de e-mail.

Qual a diferença entre sanitize_email() e is_email()?

Veja abaixo alguns exemplos comparando o retorno de cada uma das funções para alguns diferentes valores:

Valor / Retorno da funçãosanitize_email()is_email()
nome@dominio.com.brnome@dominio.com.brnome@dominio.com.br
nome@domin!!!!io.com.brnome@dominio.com.brfalse
nome@dominio(vazio)false
nome@dominio..com(vazio)false
acentuação@dominio.comacentuao@dominio.comfalse

A principal diferença entre as duas funções é que a is_email() sempre irá retornar false se o e-mail possuir qualquer caractere inválido (incluindo espaços) sem fazer qualquer alteração nele, enquanto a função sanitize_email() irá retornar uma string sem os caracteres inválidos ou vaziosempre caso o e-mail tenha um formato inválido.

Se você for salvar o e-mail em um banco de dados, como boa prática de segurança, recomendo utilizar as duas funções. Veja abaixo um exemplo onde o e-mail é recebido na variável $email:

<?php
$email = "nome@dominio.com";

// Primeiro verifica se o e-mail é válido
if ( is_email( $email ) ) {

	// Depois garante que não há nenhum caractere inválido no e-mail
	$email_corrigido = sanitize_email( $email );

	if ( !empty( $email_corrigido ) ) {

		// Adicione aqui um código que faz algo com
		// o e-mail utilizando a varíavel $email_corrigido
		
	} else {
		_e( 'O e-mail fornecido é inválido.', 'danielkossmann' );
	}

} else {
	_e( 'O e-mail fornecido é inválido.', 'danielkossmann' );
}Code language: PHP (php)

Se não for crítico que o e-mail seja válido (como em um formulário de contato com um campo obrigatório de número de telefone), apenas a utilização da função sanitize_email() é o suficiente para garantir a segurança do código.

Se você quiser saber mais sobre quais caracteres são permitidos ou não em endereços de e-mail, recomendo o artigo da Wikipedia sobre endereços de e-mail.



Comments

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *