Ich habe gesehen, dass Leute (die im Allgemeinen guten Code schreiben) das $_POST
Array direkt mit folgendem Code ändern :
// Add some value that wasn't actually posted
$_POST['last_activity'] = time();
// Alter an existing post value
$_POST['name'] = trim($_POST['name']);
// Our pretend function
// Pass the entire $_POST array as data to work with in the function
// The function update_record() will read only the values we actually need
update_record($_POST);
// ...That sure was easier than creating a new array
// with only the $_POST values we actually need.
Es ist sinnvoll, update_record()
nicht direkt auf $ _POST zuzugreifen, damit wir beispielsweise andere Arrays von Daten übergeben können, aber dies ist sicherlich faul, schlecht gestaltet oder möglicherweise einfach falsch? Wir übergeben jedoch immer noch ein gültiges Array an update_record()
. Warum also ein neues erstellen?
Dies ist nicht der Punkt der Frage, nur ein Anwendungsbeispiel. Ich habe jedoch viele Leute sagen hören, dass dies nicht mit $_REQUEST
Daten geschehen sollte , und es ist eine schlechte Praxis. Aber wieso? Sieht harmlos aus.
Beispiele:
Festlegen eines Standardwerts
$_GET
(oder Post-Werts), der nicht wirklich vorhanden istHinzufügen von
$_POST
Werten, die nach dem Absenden des Formulars noch nicht veröffentlicht wurdenDirekte Bereinigung oder Filterung der
$_GET
Array-Werte oder Schlüssel sehr früh im Skript (Fallback-Bereinigung ... warum nicht?)Manuelles Festlegen eines
$_POST
Werts vor dem Absenden des Formulars, um eine Eingabe mit einem Standardwert zu füllen (wenn die Eingabe$_POST
den Standardwert angibt; ich habe dies getan)Deine eigenen
$_SERVER
Werte erfinden? Klar, warum nicht?Wie wäre es mit den anderen, wie
$_COOKIE
und$_SESSION
? Natürlich müssen wir diese direkt ändern, oder? Warum dann nicht die anderen?
Sollten Superglobale niemals direkt modifiziert werden, oder ist dies in einigen Fällen in Ordnung ?