No debes pasarle el array con los datos ($_POST), si no un array con la definición de los datos (la forma que deben tener):
Código PHP:
Ver original 'email' => FILTER_VALIDATE_EMAIL,
'password' => FILTER_DEFAULT,
'otro_campo_de_tu_form' => FILTER_...
));
Lo mejor es que leas la documentación para saber cómo funciona concretamente, para que sepas cuando devuelve false o null (false cuando no ha pasado el filtro y null cuando una variable no ha sido definida).
Respecto al segundo punto, de cuando utilizar validate o sanitize, hay un mal concepto y muy generalizado, nunca deberías sanitizar la entrada, jamás!
Qué pasa si mi contraseña es "jdsakdl<sd>sds" (que desde luego, tengo derecho a elegir la contraseña que a mi me dé la gana) y tu antes de compararla con la que tienes en la base de datos me haces un strip_tags o FILTER_SANITIZE_SPECIAL_CHARS? pues que compararás esto: "jdsakdl<sd>sds" (lo que yo he introducido) con esto: "jdsakdlsds" (strip_tags) o esto: "jdsakdl
lt;sd
gt;sds" (FILTER_SANITIZE_SPECIAL_CHARS).
Es decir, deberías sanitizar los datos, convertir las entidades html o eliminar tags sólo cuando vayas a mostrarlos en el navegador, de lo contrario no tiene sentido y estarías trabajando con datos truncados.