Hi!
Umsteiger machen gern den Fehler und vergleichen zu viel von dem was sie kennen mit dem neuen System.
Böhse Falle. Aber PHP steckt ja noch in der Entwicklungsphase, da drücke ich maln Auge zu. In mehr als 10 Jahren hab ich ungezählte CGI-Scripts in Perl geschrieben, habe den Wechsel von Perl-v3 zu -v4, -v5 und höher erleben dürfen aber eines war immer gegeben: Die Portierbarkeit von Perl-scripts auf unterschiedliche Plattformen wobei mit den Standardfunktionen/Modulen jedes Script auf verschiedenen Plattformen/Umgebungen gleichermaßen funktioniert ohne dass das Verhalten einer Funktion von irgendwelchen Konfigurationseinstellungen abhängig ist.
Du hast es anscheinend immer noch nicht verstanden. Es ist kein Verhalten einer Funktion (mysql_real_escape_string) sondern ein Feature, das vor dem Scriptstart zuschlägt. Wegen seiner Nebenwirkungen und Fehlplatzierung ist es ja auch auf der Abschussliste. Allerdings tut es seine Funktion bei Anfängern, die noch nicht für SQL-Injection-Probleme sensibilisiert sind und in einfach(st)en Scripten.
PHP hat nun mal eine Vergangenheit, in der einiges schief gelaufen ist. Damit musst jeder leben, da hilft kein Jammern und das Glorifizieren anderer Systeme. Einige der größten Fehler sind ja für Version 6 geplant eliminiert. Gerade die Kompatibilität für ältere Scripte hat dafür gesorgt, dass sie der Prozess so lange hinzieht[*]. Dein Problem ist nun, dass dein Provider diese Kompatibilität zu wahren pflegt, obwohl die Standardeinstellung schon seit Jahren eine andere ist, und dass auf deinem Testsystem bereits die neue Konfigurationsempfehlung eingestellt ist.
[*] An der Dauer ist auch schuld, dass PHP 6 Zeit braucht um "sich zu entwickeln".
Und die Vermischung von HTML mit Script ist sowieso ein Unding und führt zu schlechten Prgrammiergestühle wie z.B. sowas hier
Wie hältst du es, ohne HTML mit anderem Code zu vermischen? Und jetzt komm mir nicht mit Platzhaltern, denn die sind auch nichts anderes als Code.
Lo!