ฉันเคยเห็นผู้คน (ซึ่งมักเขียนโค้ดที่ดี) แก้ไข$_POST
อาเรย์ด้วยรหัสดังนี้:
// 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.
มันสมเหตุสมผลที่update_record()
ไม่ควรเข้าถึง $ _POST โดยตรงดังนั้นเราจึงสามารถส่งผ่านอาร์เรย์ของข้อมูลอื่น ๆ ได้ แต่แน่นอนว่านี่คือการขี้เกียจการออกแบบที่ไม่ดีหรืออาจผิด อย่างไรก็ตามเรายังคงผ่านอาร์เรย์ที่ถูกต้องไปupdate_record()
ทำไมสร้างใหม่
นี่ไม่ใช่ประเด็นของคำถามเป็นเพียงตัวอย่างของการใช้งาน อย่างไรก็ตามฉันได้ยินผู้คนมากมายพูดว่าสิ่งนี้ไม่ควรทำกับ$_REQUEST
ข้อมูลและเป็นการฝึกฝนที่ไม่ดี แต่ทำไม ดูไม่เป็นอันตรายมากพอ
ตัวอย่าง:
การตั้งค่าเริ่มต้น
$_GET
(หรือโพสต์) ค่าที่ไม่มีอยู่จริงการเพิ่ม
$_POST
ค่าที่ไม่ได้โพสต์จริงๆหลังจากส่งแบบฟอร์มฆ่าเชื้อโดยตรงหรือกรอง
$_GET
ค่าหรือคีย์ของอาร์เรย์ในสคริปต์ (การสุขาภิบาลทางเลือก ... ทำไมไม่?)การตั้ง
$_POST
ค่าด้วยตนเองก่อนส่งแบบฟอร์มเพื่อใส่ข้อมูลด้วยค่าเริ่มต้น (เมื่ออินพุตอ่าน$_POST
ว่าเป็นค่าเริ่มต้นฉันได้ทำสิ่งนี้แล้ว)สร้างค่าของคุณเอง
$_SERVER
? แน่นอนว่าทำไมไม่แล้วคนอื่น ๆ เป็นอย่างไร
$_COOKIE
และ$_SESSION
? แน่นอนว่าเราต้องแก้ไขสิ่งเหล่านั้นโดยตรงใช่มั้ย ถ้าอย่างนั้นทำไมคนอื่นไม่ล่ะ
ควรนำการเปลี่ยนแปลงของsuperglobals ไม่เคยทำได้หรือมันตกลงที่จะทำในบางกรณี?