@noppes
Maar als ik nu $name weer mee wil laten sturen in een $_GET, dus niet ga gebruiken voor SQL, is $name = mysql_real_escape_string($_POST['naam']) ook goed?
Er is niet zoiets als een 'veilige variabele'. Variabelen zijn veilig in een bepaalde context. Zo is een var in SQL pas veilig na mysql_real_escape(), een andere escape functie of prepared statements, maar in html pas veilig na htmlentities().
In XML pas in een CDATA blok en zo voorts...
Verder is addslashes mijns inziens alleen nuttig wanneer deze slashes je data niet vervuilen, zoals in Javascript.
Het is voldoende je te beschermen tegen injection.
mysql_real_escape_string (of eventueel mysql_escape_string) zorgt er voor dat er geen verrassingen zijn bij het inserten van data.
Probeer je data verder zo puur mogelijk op te slaan in je database.
Jij moet dan wel telkens je data beschermen bij het uitlezen (SELECT * ...). Dat gaat dan weer om andere problemen, zoals html elementen die men probeert tussen de berichten te steken. Die kunnen bv. ook javascript bevatten.
Dit kan met strip_tags(). Ook stripslashes() zal je waarschijnlijk nodig hebben.
Nog iets: casten.
Indien je weet dat iets een integer moet zijn, cast het dan. Bv. $_POST['aantal'] = (int) $_POST['aantal'];
Het ergste wat dan kan gebeuren, is dat je een 0 krijgt, indien het geen getal is.