2011-12-18 17 views
10

yo uso que filter_var función de PHP para validar la dirección de correo electrónico cuando un usuario inscribirse a mi sitiophp error de correo electrónico filter_var

lo que el uso de este formato de código del mensaje:

$email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL); 

luego yo:

if(!$email) { 
    // return to the form 
} 
else { 
    // send registration info 
} 

ahora cuando var_dump ($ email)

de salida:

string(23) "user."name"@example.com" 

me gustaría saber por qué esto no es falso, creo que las comillas dobles no son aceptables por qué PHP dice que es válido?

Respuesta

15

Se es un valid email address:

puede existir una cadena entre comillas como un punto separado entidad dentro de la parte-local o puede existir cuando las cotizaciones más exteriores son los más exteriores caracteres de la local- parte (por ejemplo, abc. "defghi" .xyz @ example.com o "abcdefghixyz"@example.com están permitidos. abc" defghi "[email protected] es no; tampoco lo es abc \" def \ "ghi @ example .com).

+5

gracias por la información, creo que es ridículo que permiten este tipo de caracteres – fred

+0

@fred No todo el mundo habla y escribe Inglés. Las comillas dobles se usan a menudo para caracteres de otros idiomas. No es tan ridículo ahora, ¿eh? – Walf

11

que tenían el mismo problema (ver Dalmas sobre por qué es válida) y así es como me fijo:

filter_var($email, FILTER_SANITIZE_EMAIL); 

por ejemplo:

$email = 'user."name"@example.com'; 
$email = filter_var($email, FILTER_SANITIZE_EMAIL); 

la Salida:

string(21) "[email protected]" 

Luego puede validar el correo electrónico utilizando su validación.

se puede obtener más información sobre los php site

+1

gracias por esta respuesta, me preguntaba cómo puedo solucionarlo. mi problema es entender por qué están permitidos, lo que creo que es ridículo, gracias por la solución – fred

+0

bienvenida, creo que es demasiado pero así es como es! –

Cuestiones relacionadas