PHP: POST Superglobale bearbeiten?

Josh

Legendäres Mitglied
Hallo alle

Ist es "programmierethisch" vertretbar, die Superglobale $_POST in PHP zu ändern?

CODE $_POST["irgendwas"] = "pipapo";


LG
Josh
 
Hi,

Hmm, schwierige Frage:

Also, rein ethisch gesehen würde ich mal auf ein Nein tippen, sowas macht man einfach nicht.
wink.gif
...

Aber von der anderen Seite her betrachtet glaube ich kaum, dass das zu Fehlern führen kann. Darum spricht so gesehen auch nichts dagegen, da dabei auch nichts kaputtgehen kann
biggrin.gif
...

Greats,

S.B
 
Ich würde dies mit einen "Jein" beantworten, da sich bei sowas bestimmt die Lager teilen in der Programmiergemeinde. Ich selber würde es nicht unbedingt machen, die Superglobalen von $_POST zu verändern, jedoch verändere ich auch $GLOBALS.
Im Grund denke ich aber nicht, dass es schädlich ist, die Variablen in $_POST zu ändern.


Aber vielleicht findest Du dort ja deine gesuschte Antwort:

http://faq-php.de/ch/ch-code.html


MfG Sascha Ahlers
 
Danke für die Kommentare.

QUOTE Aber vielleicht findest Du dort ja deine gesuchte Antwort:

http://faq-php.de/ch/ch-code.html


Leider habe ich nicht wirklich etwas finden können. Aber weiss jemand, wo man einen PHP Profiler her bekommt? Gibt es da etwas Kostenloses?
 
POST und GETs ändere ich ständig.
Warum sollte man denn einer neuen Varaible einen Wert zuweisen, wenn schon eine da ist, mit der sowieso gerade gearbeitet wird.

btw. Programmiertechnisch von Ethik zu sprechen, kann ich nur als völlig unzutreffend und total abwegig bezeichnen.
tongue.gif
 
Ich mach zwar kein PHP, aber das gilt ja sinngemäss genauso für andere Sprachen. Beim Programmieren würd ich auch nicht von Ethik sprechen; Ethik ist was anderes und beim Programmieren gehts eher um Disziplin, auch wenn das ein völlig unmodisches Wort ist ;-)

QUOTE (Tuemmel @ Do 7.7.2005, 22:21)Warum sollte man denn einer neuen Varaible einen Wert zuweisen, wenn schon eine da ist, mit der sowieso gerade gearbeitet wird.

Mich grausts wenn ich sowas höre
wacko.gif

Jede Variable hat einen bestimmten Verwendungszweck. Wenn man anfängt, Variablen zu missbrauchen und einfach irgendwann, irgendwo irgendwelche Werte hineinzusetzen, führt das irgendwann zu Fehlern, die dann fast nicht mehr aufzufinden sind. Gerade bei globalen Variablen, die an jeder Stelle im Code verwendet werden können, kann das äusserst lustige Effekte geben ;-)

Ich würd sowas jedenfalls nicht mehr machen...

Griessli
Irene
 
QUOTE (Irene @ Fr 8.7.2005, 8:11) Ich mach zwar kein PHP, aber das gilt ja sinngemäss genauso für andere Sprachen. Beim Programmieren würd ich auch nicht von Ethik sprechen; Ethik ist was anderes und beim Programmieren gehts eher um Disziplin, auch wenn das ein völlig unmodisches Wort ist ;-)


QUOTE (Tuemmel @ Do 7.7.2005, 22:21)Warum sollte man denn einer neuen Varaible einen Wert zuweisen, wenn schon eine da ist, mit der sowieso gerade gearbeitet wird.

Mich grausts wenn ich sowas höre
wacko.gif

Jede Variable hat einen bestimmten Verwendungszweck. Wenn man anfängt, Variablen zu missbrauchen und einfach irgendwann, irgendwo irgendwelche Werte hineinzusetzen, führt das irgendwann zu Fehlern, die dann fast nicht mehr aufzufinden sind. Gerade bei globalen Variablen, die an jeder Stelle im Code verwendet werden können, kann das äusserst lustige Effekte geben ;-)

Ich würd sowas jedenfalls nicht mehr machen...

Griessli
Irene

Das hat schon der gute alte HD Soldat Läppli gesagt: "Eis wämmer ned vergässe: en Soldat ohni Disssszibliin isch kei richtige Soldat!".
wink.gif
Muss den Film unbedingt wieder mal gucken, hab vor Jahren mal die DVD für 50.- SFr. gekauft...
rolleyes.gif


Ich bin eigentlich völlig deiner Meinung, Irene. Je grösser ein Projekt wird, desto sauberer muss es realisiert werden, sonst häufen sich Fehler und Folgefehler.
Gerade aber PHP ist halt sehr légèr was saubere Strukturen angeht, da kann man bei Vielem "schummeln"... Deshalb schreie ich immer wieder nach klareren Programmierstrukturen und Patterns für PHP...
Nichtsdestotrotz sollte man sich nicht in Versuchung führen lassen...
tongue.gif
 
java macht es dir leichter sauber zu programmieren.
du könntest das aber auch mit php nur liegt es da an dir
smile.gif


letztlich zahlt sich sauberer code fast immer aus.
selbst bei sehr kleinen projekten, denn wer weiss wann der kunde die nächste erweiterung plant.

 
QUOTE (manuel @ Fr 8.7.2005, 17:02)java macht es dir leichter sauber zu programmieren.
du könntest das aber auch mit php nur liegt es da an dir
smile.gif

[...]

Ich habe gehört, dass C# beim dem sauberen Programmierstil auch sehr kleinlich sein soll , wohl sogar noch mehr als bei Java.
Mein Ausbilder behauptet auf jedenfall, dass C# es recht genau mit dem Programmcode nimmt. Und nach seinen Erzählungen schließe ich dies einfach darauß (ich habe im Gegensatz zu meinen Ausbilder etwas mehr mit Java gearbeitet). Er hat in dem Bereich C++ und C# ein recht gutes Wissen, auch wenn er sich selber nur als Drop & Dirty Programmierer ansieht.

BTW beim sauberen Programmieren von PHP kann man immerhin auf einige Hilfsmittel zurück greifen. Unter anderem auch mit diesem Mittel, welches einfach ganz am Anfang des kompletten Scripts gesetzt oder gleich innerhalb der "php.ini" festgelegt wird.

CODE error_reporting(E_ALL); # bei PHP 4
error_reporting(E_ALL | E_STRICT); # bei PHP 5

Nach zu lesen unter: http://www.php.net/manual/de/ref.errorfunc.php


MfG Sascha Ahlers
 
ja das hilft dir aber leider nicht wirklich viel.
weil $_POST['x'] = 'lala'; kannst du trotz E_ALL schreiben.

und das ist wirklich ein problem. weil selbst wenn du variablen in einer funktion / methode als global markierst ist das ja noch zu verkraften es ist dann quasi ein übergabe parameter. aber wenn du $_POST['x'] = 'lala'; schreibst hast du eben gar keine kontrolle mehr darüber wo die verwendet wird.

php ist trotzdem gut
wink.gif
... gerade weil eben nicht jeder schmarrn definiert ist konnte sogar ich diese sprache lernen. bei java etc. muss man viel mehr denken
smile.gif
 
QUOTE (manuel @ Fr 8.7.2005, 21:21)ja das hilft dir aber leider nicht wirklich viel.
weil $_POST['x'] = 'lala'; kannst du trotz E_ALL schreiben.
[...]

Bitte einfach mal die Beiträge lesen und verstehen. Und wenn es dann noch hinzu bekommen ist, bitte auch die Groß- und Kleinschreibung verwenden.

Ich meinte dies als Beispiel eines Hilfsmittel, unter anderen zeigt Dir diese Einstellung, ob eine Variable gesetzt ist bzw. diese zu mindestens durch Abfangroutinen kontrolliert wird. Ich kann mich nicht entsinnen behauptet zu haben, dass ich damit das verändern der Superglobalen-Variablen kontrollieren kann. Es ist auch kein Fehler in dem Sinne, sondern es wird nur empfohlen, dies nicht zu machen, um nicht selber Opfer eines Logik-Fehlers zu werden. Selbst der strenge Compiler von Java wird Dich nicht vor Logik-Fehlern schützen können.

Für nicht veränderbare Werte sind i.d.R. auch Konstanten dar, welche über die Funktion define() gesetzt werden können bzw. in PHP 5 Klassen mit const definiert werden.Auch ja, und es hilft mir auf jedenfall einen besseren Quellcode zu schreiben.
Und ganz nebenbei, Java ist eigentlich nicht so schwer, man müsste halt nur umlernen; frei nach dem Motto, wer ein Mal wirklich Programmieren gelernt hat, der kann auch in jeder beliebigen Sprache programmieren, er muss sich halt nur mit deren Besonderheiten vertraut machen.



MfG Sascha Ahlers
 
QUOTE (Sascha Ahlers @ Fr 8.7.2005, 21:11)Ich habe gehört, dass C# beim dem sauberen Programmierstil auch sehr kleinlich sein soll , wohl sogar noch mehr als bei Java.

Die sind beide genau gleich "kleinlich". Jede Variable muss deklariert sein, es soll keine zuviel deklariert sein, und die Typen bei Variablen und Parametern müssen stimmen. Da gibts keinen Unterscheid zwischen Java und C#.

Das hindert mich aber nicht grundsätzlich am unsauberen Programmieren. Ich kann immer noch eine globale Variable als Object deklarieren und diese dann an verschiedensten Orten mit verschiedensten Werten füllen und mich selber auf die Nase fallen lassen ;-)

Griessli
Irene
 
QUOTE (Sascha Ahlers @ Fr 8.7.2005, 21:11)
QUOTE (manuel @ Fr 8.7.2005, 17:02)java macht es dir leichter sauber zu programmieren.
du könntest das aber auch mit php nur liegt es da an dir
smile.gif

[...]

Ich habe gehört, dass C# beim dem sauberen Programmierstil auch sehr kleinlich sein soll , wohl sogar noch mehr als bei Java

Letzendlich ist was "sauberes Programmieren" angeht die Sprache relativ nebensächlich.

Da ist das eigene Wissen (weiß man überhaupt, was man falsch machen kann? ; kennt man Exeption Handling?) und die eigene Disziplin viel wichtiger.

Wenn man dann noch von einer guten IDE unterstützt wird, die einem Dinge wie einrücken abnimmt und durch automatisches Ergänzen Tippfehler vermeidet, ist man auch noch mal ein Stück weiter. Wenn der Compiler/Debugger im Fehlerfall dann noch gute verständliche Meldungen gibt, kommt man noch schneller weiter.

Das alles ist relativ unabhängig von der Sprache.
Nur programmiert der durchschnittliche PHP-Programmierer mit einem Editor und testet direkt auf dem Server.
Der Java/C#/C++ -Programmierer dagegegen programmiert eher mit einer ausgewachsenen IDE.
 
QUOTE (Irene @ Fr 8.7.2005, 8:11) Mich grausts wenn ich sowas höre
wacko.gif

Jede Variable hat einen bestimmten Verwendungszweck. Wenn man anfängt, Variablen zu missbrauchen und einfach irgendwann, irgendwo irgendwelche Werte hineinzusetzen, führt das irgendwann zu Fehlern, die dann fast nicht mehr aufzufinden sind. Gerade bei globalen Variablen, die an jeder Stelle im Code verwendet werden können, kann das äusserst lustige Effekte geben ;-)


Wenn ich eine REQUEST-Variable 50mal im Code brauche und die ist mangels Eingabe leer, dann weise ich ihr einen Wert zu.
Sonst sind Effekte eben genau so lustig, wie Du beschreibst. (Variablenmissbrauch
rolleyes.gif
)
 
QUOTE Der Java/C#/C++ -Programmierer dagegegen programmiert eher mit einer ausgewachsenen IDE.


Und gerade WEIL PHP so nachlässig ist, ist es beinahe unmöglich, eine wirklich gute IDE dafür zu programmieren.
Wenn man lange mit PHP in einem Text Editor gearbeitet hat und dann einmal Java in Eclipse programmiert, dann staunt man nur so, was das alles Tolles kann. Aber gerade weil Java so strike ist, kann man auch eine IDE mit einer strikten, sauberen Logik ausstatten, welche den geschriebenen Code sauber analysieren und den Programmierer unterstützen kann. In PHP ist so etwas praktisch unmöglich, da z.B. ein Objekt von wess-Gott-woher kommen kann und die IDE garantiert nicht erkennt, von welchem Typ sie ist um per Intellisense Methodennamen des Objekts einzublenden.

Somit habe ich mir angewöhnt, von Java zu lernen und mein Wissen soweit wie möglich auf PHP zu übertragen, auch wenn ich dort statt einer Prachts-IDE wie Eclipse nur mein gutes altes EditPlus2 verwende.
wink.gif
 
Zurück
Oben