Ich habe gesehen, dass Leute (die im Allgemeinen guten Code schreiben) das $_POSTArray 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 $_REQUESTDaten 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
$_POSTWerten, die nach dem Absenden des Formulars noch nicht veröffentlicht wurdenDirekte Bereinigung oder Filterung der
$_GETArray-Werte oder Schlüssel sehr früh im Skript (Fallback-Bereinigung ... warum nicht?)Manuelles Festlegen eines
$_POSTWerts vor dem Absenden des Formulars, um eine Eingabe mit einem Standardwert zu füllen (wenn die Eingabe$_POSTden Standardwert angibt; ich habe dies getan)Deine eigenen
$_SERVERWerte erfinden? Klar, warum nicht?Wie wäre es mit den anderen, wie
$_COOKIEund$_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 ?