Moin!
Wann immer du Werte in einen Kontext bringst, sind diese Werte kontextgerecht zu behandeln. Wenn jemand aus Côte d'Ivoire kommt, bekommst du nur einen Syntaxfehler.
$input = "<?php \n\$namen = '$ganznamen';\n ?>";
Was für den Kontext "Variableninhalt kommt in SQL" gilt, gilt natürlich auch für den Kontext "Variableninhalt kommt in PHP-Sourcecode" - nur sind die Konsequenzen hier drastischer, wenn man dabei irgendeinen Fehler macht. Ausserdem ist das Escaping komplizierter, weil es für die hier notwendigen Ersetzungen von Zeichen in sichere Ersatzzeichen keine komplett fertige Funktion gibt.
Außerdem ist es garantiert nicht der Sicherheit dienlich, wenn du Code aus Benutzereingaben zusammenbaust, noch dazu vermutlich ungefilterten. Manche Leute heißen dann auf einmal ';phpinfo(); $foo=' oder noch unangenehmer.
Leider lieferst du an dieser Stelle den gefährlichen Code, und nicht den Versuch des ungefährlichen Codes.
- Sven Rautenberg