คอมพิวเตอร์ซอฟต์แวร์

PHP ตัวแปรทั่วโลกในการทำงาน สร้างตัวแปรทั่วโลกใน PHP

การสร้างเว็บไซต์เต็มรูปแบบซึ่งมีการทำงานในวงกว้างที่คุณจำเป็นต้องรู้มาก แต่สิ่งที่สามารถทำให้เขาที่ไม่ซ้ำกันอย่างแท้จริง - มันเป็น PHP ตัวแปรระดับโลกในภาษาการเขียนโปรแกรมที่ไม่ได้ใช้บ่อยมาก แต่บางครั้งที่จะรู้วิธีการทำงานบางครั้งก็เป็นสิ่งที่จำเป็น นั่นคือการศึกษาว่ามันคืออะไรและวิธีการทำงานเราจะไปทำในบทความนี้

ขอบเขต

ดังนั้นเรียกบริบทที่ตัวแปรและความมุ่งมั่น ในกรณีส่วนใหญ่พวกเขามีเพียงหนึ่งในขอบเขต เมื่อ PHP ตัวแปรทั่วโลกโหลดจากไฟล์อื่น ๆ แล้วมันอาจจะรวม (รวม) และต้องการ (ต้อง)

โดยค่าเริ่มต้นที่พวกเขาจะถูก จำกัด ขอบเขตการทำงานของท้องถิ่น และวิธีการที่จะทำให้ตัวแปรไฟล์ที่เห็นในขอบเขตที่มากขึ้นและสามารถใช้งานหรือไม่ ด้วยเหตุนี้และมีการระบุไว้ในตัวแปร PHP

คำว่า "โลก"

และนี่คือวิธีการประกาศตัวแปรทั่วโลกเพื่อ PHP? ในการบรรลุเป้าหมายนี้จะช่วยให้เราคำว่า "โลก" มันเป็นสิ่งจำเป็นที่จะวางในด้านหน้าของตัวแปรที่คุณต้องการที่จะทำให้ทั่วโลก (narimer ทั่วโลก«ตัวแปร ")

หลังจากการดำเนินการดังกล่าวบ่งชี้ข้อมูลที่จะสามารถทำงานกับไฟล์ใด ๆ ถ้าที่ไหนสักแห่งที่มีการอ้างอิงกับตัวแปรนี้โปรแกรมมักจะให้ความสนใจในรุ่นทั่วโลก

ทำไมเช่นภาษาแปลก ๆ ? ความจริงที่ว่าในเวลาเดียวกันอาจจะมีรุ่นท้องถิ่น แต่พวกเขาจะสามารถใช้ได้เฉพาะสำหรับไฟล์เหล่านั้นที่ประกาศ และสำหรับส่วนที่เหลือทั้งหมดจะทำหน้าที่ตัวแปรทั่วโลกเรียน PHP ดังนั้นคุณจะต้องระมัดระวัง และนั่นหมายความว่าไม่ต้องสงสัยเลยว่านี่คือตัวอย่างของสิ่งที่พวกเขามีลักษณะเหมือน: ทั่วโลก

เพราะถ้าหนึ่งไฟล์จะมีการเข้าถึงจำนวนของตัวแปรก็จะทำให้พวกเขาไปสู่ความขัดแย้ง แต่เราไม่สามารถพูดได้อย่างแน่นอน - ประเทศหรือทั่วโลกตัวแปรอ่านหรือล้มเหลวโดยสิ้นเชิง ดังนั้นถ้ามันคือการลงทะเบียนในการทำงานก็จะไม่มีปัญหา แต่การใช้ตัวแปรสำหรับเส้นขอบของมันจะเป็นปัญหา ดังนั้นโครงสร้างของการจัดทำร่างของรหัสที่จำเป็นในการตรวจสอบอย่างใกล้ชิดและให้แน่ใจว่าไม่มีที่ไหนเลยที่จะมีแม้กระทั่งสิ่งที่จำเป็นที่จะกล่าวว่าความขัดแย้งที่เกิดขึ้น

ศูนย์รวมของการบันทึกอีก

มันเป็นไปได้ใน PHP เพื่อสร้างตัวแปรทั่วโลกในทางอื่นได้หรือไม่ ใช่ไม่ได้แม้แต่คนเดียว อันดับแรกให้พิจารณา $ GLOBALS นี้เป็นอาเรย์ กุญแจสำคัญในการมัน - คือชื่อ ในฐานะที่เป็นคุณค่าของเนื้อหาที่ทำหน้าที่เป็นตัวแปรทั่วโลก มันควรจะตั้งข้อสังเกตว่าหลังจากการประกาศอาร์เรย์ที่มีอยู่ในขอบเขตใด ๆ นี้จะช่วยให้เหตุผลที่จะเชื่อว่ามัน superglobal เพื่อให้มันดู: $ GLOBALS [ 'ตัวแปร']

ที่กำหนดไว้ล่วงหน้า / superglobals

ในการเขียนโปรแกรมภาษาทุกมีชื่อบางส่วนที่มีการเช่าเหมาลำสำหรับบางส่วนของฟังก์ชั่น ดังนั้นการสร้างใน PHP ตัวแปรทั่วโลกที่มีชื่อเดียวกันจะไม่ทำงาน

การเขียนโปรแกรมภาษานี้มีลักษณะของตัวเอง ดังนั้นจึงเป็นสิ่งสำคัญที่ตัวแปรที่กำหนดไว้ล่วงหน้าที่นี่จะไม่ได้รับการติดตั้ง "ซูเปอร์" คือว่าพวกเขาจะไม่สามารถใช้ได้ในทุกสถานที่ ฉันจะแก้ไขมันได้หรือไม่ ตัวแปรที่กำหนดไว้ล่วงหน้าที่มีอยู่ในท้องถิ่นบางส่วนก็จะต้องประกาศดังต่อไปนี้ :. ทั่วโลก«ตัวแปร" มันน่าจะเป็นเช่นเดียวกับก่อนที่จะบอกใช่มั้ย? มันเป็นความจริง แต่ไม่มาก ให้เราดูแล้ว "การต่อสู้" ตัวอย่าง:

  • ทั่วโลก $ HTTP_POST_VARS;
  • echo $ HTTP_POST_VARS [ 'ชื่อ']

คุณรู้สึกแตกต่างระหว่างพวกเขาหรือไม่ โปรดสังเกตว่าในตัวแปร PHP ไม่จำเป็นต้องใช้ในการทำงาน มันยังสามารถวางไว้ในแฟ้มที่จะรวมอยู่ในนั้น

การเชื่อมโยงและความปลอดภัย

ในขณะที่คุณสามารถดูใน PHP สร้างตัวแปรทั่วโลกไม่ได้เป็นปัญหา แต่จะมีการเชื่อมโยงญาติใด ๆ โดยเฉพาะอย่างยิ่ง? ใช่อาจจะมีพฤติกรรมที่ไม่คาดคิดเมื่อใช้ทั่วโลก แต่ก่อนนั้น backstory เล็ก ๆ น้อย ๆ

ในรุ่น 4.2.0 สั่งโดย register_globals เริ่มต้นเปลี่ยนจากบนของรัฐที่จะออก สำหรับผู้ใช้ส่วนใหญ่นี้ไม่ได้เป็นสิ่งที่สำคัญมาก แต่ก็ไร้ผล หลังจากที่ทั้งหมดจะมีผลโดยตรงต่อการรักษาความปลอดภัยของผลิตภัณฑ์ที่พัฒนาแล้ว หากคุณต้องการที่จะทำให้ตัวแปรทั่วโลก, PHP-สั่งพารามิเตอร์นี้จะไม่ได้รับผลกระทบโดยตรง แต่ใช้ไม่ถูกต้องแล้วสามารถสร้างความมั่นคงทำนอง

ดังนั้นหาก register_globals เปิดอยู่ก่อนที่จะดำเนินการของโค้ดที่เขียนที่เริ่มต้นตัวแปรที่แตกต่างที่มีความจำเป็นเช่นการส่งแบบ HTML รูปแบบ ดังนั้นมันก็ตัดสินใจที่จะปิด

คือสถานะของคำสั่งนี้ในตัวแปรทั่วโลก PHP ทำไมเป็นหนี้มาก? ความจริงก็คือว่าเมื่อรัฐของนักพัฒนาไม่เคยมีความเชื่อมั่นตัวเองสามารถตอบคำถามของที่มันมาจาก ในมือข้างหนึ่งก็จะง่ายต่อการเขียนโค้ด แต่ที่อื่น ๆ - มันเป็นความเสี่ยงด้านความปลอดภัย ดังนั้นเพื่อหลีกเลี่ยงข้อผิดพลาดเช่นเดียวกับข้อมูลการผสมและการสั่งถูกปิดใช้งาน

ตอนนี้ให้ดูไม่ได้ / รหัสรักษาความปลอดภัยเช่นเดียวกับวิธีการตรวจสอบกรณีที่มีการประกาศตัวแปร PHP ทั่วโลกจะมาพร้อมกับความพยายามที่จะยุ่งเกี่ยวกับข้อมูล นี้เป็นสิ่งจำเป็นในการสร้างไม่เพียง แต่สวยงาม แต่ยังทำงานอย่างต่อเนื่องเว็บไซต์ที่ไม่แตกคนแรกที่

โค้ดที่เป็นอันตราย

ลองตั้งค่าตัวแปรที่เป็นจริงสำหรับผู้ที่ได้รับอนุญาต:

ถ้า (authenticate_user ()) {
$ Authorize = true;
}

ถ้า ($ อนุมัติ) {
รวมถึง "/highly/sensitive/data.php";
}

ในรัฐนี้ตัวแปรที่สามารถตั้งค่าโดยอัตโนมัติ พิจารณาว่าข้อมูลที่สามารถเพียงแค่ถูกแทนที่และแหล่งที่มาของการกำเนิดของพวกเขาไม่ได้ถูกกำหนดแล้วทุกคนสามารถผ่านการทดสอบดังกล่าวและหลอกว่าเป็นคนอื่น ถ้าต้องการให้ผู้บุกรุก (หรือเพียงแค่คนที่อยากรู้อยากเห็น แต่ไม่มีประสบการณ์) อาจด้อยค่าตรรกะของเรา

ถ้าเราเปลี่ยนค่าของคำสั่งรหัสนี้จะทำงานได้อย่างถูกต้องในขณะที่เราจำเป็นต้องใช้ แต่เริ่มต้นของตัวแปรไม่ได้เป็นเพียงเสียงที่ดีในการเขียนโปรแกรม แต่ยังช่วยให้เรามีการรับประกันหนึ่งของความมั่นคงของสคริปต์

รุ่นที่น่าเชื่อถือของรหัส

คุณสามารถปิดการทำงานหรือคำสั่งหรือกำหนดรหัสที่ซับซ้อนมากขึ้นเพื่อให้บรรลุเป้าหมายนี้ ตัวอย่างเช่นนี้

ถ้า (isset ($ _ SESSION [ 'ชื่อผู้ใช้'])) {

echo "สวัสดี {$ _ SESSION [ 'ชื่อผู้ใช้']} ";

} else {

echo "สวัสดี เกสท์
";
echo "ผู้ใช้ยินดีต้อนรับ!";

}

ทำให้ทดแทนในกรณีนี้มีจะเป็นเรื่องยาก แต่ก็ยังคง - เป็นไปได้ การทำเช่นนี้คุณจะต้องดูแลว่าเครื่องมือที่ตอบสนองอย่างรวดเร็วมีให้ หากคุณต้องการที่จะรวมตัวแปรใน PHP, คุณสามารถใช้เครื่องมือดังต่อไปนี้ถ้าเรารู้ว่าสิ่งที่ช่วงคือค่าที่ได้รับก็เป็นไปได้ที่จะลงทะเบียนสคริปต์เพื่อตรวจสอบเรื่องนี้ด้วยการจับคู่ แน่นอนว่ามันยังไม่ได้รับประกันคุ้มครองเต็มรูปแบบกับค่าทดแทน แต่นั่นเป็นตัวเลือกมากเกินไปอย่างมีนัยสำคัญที่ซับซ้อน

พบความพยายามที่จะสวมหน้ากาก

ลองดูว่าคุณเข้าใจที่เขียนไว้ก่อนหน้านี้ ใน PHP ตัวแปรทั่วโลกในการทำงานที่จะได้รับด้านล่างนี้คุณจะต้องประกาศตัวเอง เราสามารถพูดได้ว่านี้เป็นชนิดของบ้านในการดูดซึมของหัวข้อบทเรียนที่ นี่คือรหัส:

ถ้า (isset ($ _ COOKIE [ 'C_COOKIE'])) {
} elseif (isset ($ _ GET [ 'C_COOKIE']) || isset ($ _ POST [ 'C_COOKIE'])) {

mail ( "administrarot@example.com", "เรียนสคริปต์ได้รับการบันทึกความพยายามในการลักทรัพย์และยุ่งเกี่ยวกับข้อมูล", $ _SERVER [ 'REMOTE_ADDR']);
echo "มีความปลอดภัยหักเป็นหรือพยายามที่จะทำเช่นนั้นได้รับการแจ้งเตือนผู้ดูแลระบบ.";
ทางออก;

} else {
}
?>

ตอนนี้คำอธิบายดังกล่าว บางส่วน C_COOKIE มาให้เราจากแหล่งที่เชื่อถือได้ เพื่อความพึงพอใจอย่างเต็มที่ตามผลที่คาดหวังเราจะตรวจสอบความคุ้มค่าและแจ้งให้ผู้ดูแลระบบในกรณีที่เกิดปัญหา ถ้ามันไม่ได้มาจากนั้นดำเนินการใด ๆ และไม่ต้องการที่จะทำให้ คุณต้องเข้าใจว่าเพียงแค่ปิดการใช้งานคำสั่ง register_globals ไม่ได้ทำให้รหัสของคุณมีความปลอดภัย ดังนั้นตัวแปรใด ๆ ที่ได้รับสคริปต์จากผู้ใช้ควรจะตรวจสอบมูลค่าที่คาดว่าจะ

ข้อสรุป

ที่นี่ในทั่วไปและทุกสิ่งที่คุณจำเป็นต้องรู้เกี่ยวกับตัวแปรทั่วโลกจะประสบความสำเร็จและปลอดภัยใช้พวกเขาในการทำงานของพวกเขา แน่นอนที่จะบอกว่ามีการรับประกันเต็มรูปแบบที่ไม่มีใครจะใช้พวกเขาไม่สามารถ - ผู้โจมตีจะมีการปรับปรุงวิธีการและทักษะของพวกเขา ดังนั้นจึงเป็นที่พึงปรารถนาเพื่อ จำกัด การใช้งานสูงสุดของตัวแปรในรหัส โชคดีที่มีโครงสร้างและการออกแบบลักษณะของภาษาโปรแกรมนี้สามารถบรรลุเป้าหมายนี้ โชคดี!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 th.delachieve.com. Theme powered by WordPress.