Questo codice conta i caratteri e mostra a ritroso i caratteri mancanti, lui conta giusto anche gli spazi e gli "a capo", ma se poi invio lui poi fa uscire l'alert "MESSAGGIO: max 100 caratteri". Questo succede solo se vado a capo in manuale.

Forse conta gli "a capo" senza conteggiarli veramente?

codice:
if (strlen($messaggioS) > 100) { 
echo "MESSAGGIO: max 100 caratteri";
}

...

function contaS(el) {
var max_char = 100; // Limite massimo di caratteri consentiti
var conta_caratteri = el.value.length;
if(conta_caratteri >= max_char) {
conta_caratteri = max_char;
el.value = el.value.substring(0, max_char);
}
document.getElementById("ContatoreS").innerHTML = max_char - conta_caratteri;
if(max_char - conta_caratteri > 50) {  // Da 50 in su il contatore ridiventa #666666
document.getElementById("charCountS").className = 'defaultS';
document.getElementById("charCount1-S").className = 'defaultS';
document.getElementById("ContatoreS").className = 'formattaNumeroS';
}
}