Codice PHP:
elseif (isset($mail) and $mail != "" and $flag_check == and $mail == "" and $ip=="" && !strstr($mail,".") or !strstr($mail,"@")) 
Questo controllo non ha concettualmente senso...a partire dal fatto che usi u AND su $mail != "" e poi $mail == "". Cosi facendo pretendi che $mail sia vuota e valida allo stesso tempo...impossibile. Controlla meglio i check e rivedi la logica del controllo.