Rumah >pembangunan bahagian belakang >tutorial php >Mengapa register_globals Dilumpuhkan dalam PHP?
Dalam PHP, register_globals ialah tetapan dalaman yang mendaftarkan pembolehubah secara automatik daripada tatasusunan superglobal $_REQUEST. Walau bagaimanapun, ia telah dilumpuhkan secara lalai disebabkan oleh kebimbangan keselamatan.
Apabila register_globals didayakan, nilai medan input daripada permintaan POST atau GET boleh diakses terus sebagai pembolehubah yang sama nama sebagai medan input. Contohnya:
<form method="post"> <input type="text" name="username"> <input type="submit"> </form>
Dengan register_globals didayakan, kod PHP berikut akan dinilai kepada benar pada permulaan skrip:
$username === $_POST['username'];
Register_globals diperkenalkan kelemahan keselamatan yang serius. Sebagai contoh, penyerang boleh menambahkan parameter rentetan pertanyaan pada URL, seperti "?authorized=1", untuk memintas semakan kebenaran.
Tidak seperti register_globals, kata kunci global mempunyai tujuan yang berbeza. Ia digunakan untuk mengakses pembolehubah dari skop yang berbeza dalam fungsi. Contohnya:
$foo = 'bar'; function baz() { // Attempting to use $foo here will trigger a warning echo $foo; } function buzz() { global $foo; // Declares that $foo is a global variable echo $foo; // Prints 'bar' }
Walaupun register_globals tidak lagi digunakan kerana risiko keselamatannya, kata kunci global kekal sebagai alat yang berguna untuk mengakses pembolehubah dalam skop yang berbeza.
Atas ialah kandungan terperinci Mengapa register_globals Dilumpuhkan dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!