En spijtig dat ingevoerde waarden volledig verloren gaan als er 1 foutje is. Geen enkele bezoeker die die moeite terug doet om alles opnieuw in te geven.
Mogelijk onveilig omdat $email uit meerdere regels mag bestaan (gevolg: MIME header injection mogelijk) / er wordt niet goed gecontroleerd of $email een e-mailadres is.
Alles uit (onder andere) $_POST en $_GET zijn bij mijn weten strings. Ik zie dan ook niet in waar de is_null controles (op verschillende plaatsen in de scripts) voor zijn.
Het is volgens mij nog steeds mogelijk om MIME headers te injecteren in $name. Deze accepteert regelovergangen, dus je zou $name de waarde: "Ontvanger <[het e-mailadres $email]>
Bcc: Spam <spam@meplenty.org" of iets dergelijks kunnen geven...
Ook kun je het formulier makkelijk breken (als je deze niet goed of niet volledig invult) omdat de teruggeplaatste waarden van $_POST in het geheel niet worden geescaped. Zet ergens maar eens een " (dubbele quote) of </textarea> in...
Qua security laat dit script (nog steeds) nogal te wensen over.
Overigens is het voltooid deelwoord van het werkwoord to send gelijk aan sent. Als je dus een boolse variabele hebt die aangeeft of het e-mailbericht succesvol is verzonden, dan zou deze isSent of iets dergelijks moeten heten, niet isSended.
Het volgende is mogelijk een kwestie van voorkeur, maar ik zou && en || gebruiken in plaats van "and" en "or". Een uitzondering hierop zijn wellicht constructies zoals "... or die(...)...".