Hallo,
die folgende Fallunterscheidung darf heute nicht mehr relevant sein. Hoster, die sowas uraltes PHP 4.0.x oder gar PHP 3.x anbieten, muss man meiden, da es offene Sicherheitslöcher sind.
if ( isset( $_POST ) )
$postArray = &$_POST ; // 4.1.0 or later, use $_POST
else
$postArray = &$HTTP_POST_VARS ; // prior to 4.1.0, use HTTP_POST_VARS
In diesem Abschnitt wird davon ausgegangen, dass $_POST keine Arrays enthält.
Wird im Beispielcode so sein, davon darfst Du nicht immer ausgehen. Das Umkopieren der Daten aus $_POST ist überflüssig wenn nicht sogar schädlich.
Statt stripslashes wäre die benutzerdefinierte Funktion stripslashes_deep, siehe Beispiel 2 im Handbuchabschnitt zu stripslashes() anzuwenden - und zwar gleich zu Beginn des Skriptes, damit es nur eine einzige Stelle im Skript gibt, an der das zu berücksichtigen ist.
foreach ( $postArray as $sForm => $value )
{
if ( get_magic_quotes_gpc() )
string htmlspecialchars ( string $string [, int $quote_style [, string $charset [, bool $double_encode ]]] ) ;
hier solltest Du den Aufruf von htmlspecialchars() *weglassen* - und nicht einfach die allgemeine Syntax des Aufrufs von htmlspecialchars reinkopieren.
Dabei gilt es zu beachten, was Jens bezüglich Cross-Scripting geschrieben hat.
Freundliche Grüße
Vinzenz