Ik ben bezig met een functie die een string inkort vanaf de eerste 'end_of_line' (als die al voorkomt). Die functie wil ik gaan gebruiken bij het uitlezen van een formulier, om spam-misbruik tegen te gaan. Na een 'end_of_line' kunnen immers extra headers (Cc: en Bcc: ) toegevoegd worden.
Je gaat dus voor alle formulier waardes die maar uit 1 regel kunnen bestaan deze functie er over heen halen? of alleen voor email adressen?
Zelf doe ik dit niet het eerste wat ik doe is \r\n en \r vervangen door 2 keer en \n. Daarna controleerd ik de waardes met een regex. Alleen moet je dus geen s modifier in je regex hebben andere worden de enters als nog gematched.
Misschien is die manier van jou nog wel veiliger, omdat je dan tenmiste weet dat je maar 1 regel tepakken hebt.
De mail()-functie heeft (zoals je weet) vier parameters. Het lijkt mij essentieel dat $mailto, $subject en de regels in $headers geen extra 'end_of_line' bevatten. Dus als die uit het formulier moeten komen, dan gaan ze eerst door de functie.
In $message mag natuurlijk best een 'end_of_line' zitten. Als daarin na een 'end_of_line' Bcc: (enz.) staat kan dat geen kwaad.