Esce l'alert solo se viene inserita la barra inversa "\" ma non per "<" e ">".
Non mi sembra che il codice sia errato.
//Caratteri non ammessi
if (strpos($nome.$url.$citta.$messaggio, "<") !== false ||
strpos($nome.$url.$citta.$messaggio, ">") !== false ||
strpos($nome.$url.$citta.$messaggio, "\\") !== false)
{
$errore .= "I caratteri < > \ non sono ammessi";
}