KomputerPerangkat lunak

PHP variabel global dalam fungsi. Membuat variabel global di PHP

Untuk membuat situs lengkap, yang memiliki fungsi yang luas Anda perlu tahu banyak. Tapi apa yang bisa membuatnya benar-benar unik - itu adalah PHP. Variabel global dalam bahasa pemrograman tidak digunakan sangat sering, tapi kadang-kadang tahu cara kerjanya, kadang-kadang perlu. Itu adalah studi tentang apa itu dan bagaimana cara kerjanya, kita akan melakukan dalam artikel ini.

cakupan

Begitu panggilan konteks di mana variabel dan ditentukan. Dalam kebanyakan kasus, mereka hanya memiliki satu ruang lingkup. Ketika PHP variabel global diambil dari file lain, maka mungkin inklusif (termasuk) dan diperlukan (membutuhkan).

Secara default, mereka terbatas pada lingkup fungsi lokal. Dan bagaimana membuat variabel terlihat file dalam batas-batasnya, yang bisa lebih dan digunakan? Untuk tujuan ini, dan disediakan dalam variabel global PHP.

kata kunci "global"

Dan di sini adalah bagaimana untuk mendeklarasikan variabel global untuk PHP? Dalam mencapai tujuan ini akan membantu kita kata "global". Hal ini diperlukan untuk menempatkan di depan variabel yang ingin Anda membuat global (narimer, global yang «Variabel").

Setelah pelaksanaan indikasi seperti itu, data akan dapat bekerja dengan file apapun. Jika di suatu tempat ada referensi untuk variabel ini, program akan selalu memperhatikan pada versi global.

Mengapa seperti bahasa yang aneh? Fakta bahwa pada saat yang sama mungkin ada versi lokal. Tapi mereka akan tersedia secara eksklusif untuk file-file di mana diumumkan. Dan untuk semua sisanya akan bertindak variabel global kelas PHP. Oleh karena itu Anda harus berhati-hati. Dan bahwa tidak ada keraguan, inilah contoh dari apa yang mereka terlihat seperti: a global.

Karena jika satu file akan memiliki akses ke sejumlah variabel, hal itu akan menyebabkan mereka bertentangan. Tapi kita tidak bisa mengatakan dengan pasti - lokal atau global variabel dibaca atau sama sekali gagal. Jadi, jika ingin mendaftar di fungsi, itu seharusnya tidak ada masalah. Tetapi penggunaan variabel untuk perbatasannya bermasalah. Oleh karena itu, struktur penyusunan kode yang diperlukan untuk memantau dan memastikan bahwa tempat bahkan ada prasyarat untuk konflik kata muncul.

perwujudan lain dari rekaman

Apakah mungkin di PHP untuk membuat variabel global dengan cara lain? Ya, bahkan satu tidak. Pertama, mari kita mempertimbangkan $ GLOBALS. Ini adalah array asosiatif. Kunci untuk itu - adalah nama. Sebagai nilai dari isi bertindak sebagai variabel global. Perlu dicatat bahwa array setelah pengumuman ada di lingkup apapun. Hal ini memberikan alasan untuk percaya superglobal. Ini terlihat begitu: $ GLOBALS [ 'variabel'].

Yang telah ditetapkan / superglobals

Dalam setiap bahasa pemrograman ada beberapa nama yang disewa untuk beberapa fungsi. Oleh karena itu, untuk membuat PHP variabel global dengan nama yang sama tidak akan bekerja.

Bahasa pemrograman ini memiliki ciri khas tersendiri. Jadi, penting bahwa variabel yang telah ditetapkan di sini tidak menginstal "super", yaitu, mereka tidak tersedia di semua lokasi. Bagaimana saya bisa memperbaikinya? Untuk variabel yang telah ditetapkan tersedia di beberapa daerah, harus dinyatakan sebagai berikut :. global «Variable" Tampaknya menjadi sama seperti sebelumnya mengatakan, benar? Memang benar, tapi tidak cukup. Mari kita lihat sudah "berjuang" contoh:

  • $ global HTTP_POST_VARS;
  • echo $ HTTP_POST_VARS [ 'nama'].

Anda merasakan perbedaan antara mereka? Perhatikan bahwa dalam variabel global PHP tidak selalu harus digunakan dalam fungsi. Bahkan dapat ditempatkan dalam file yang disertakan di dalamnya.

Link dan keamanan

Seperti yang Anda lihat, di PHP membuat variabel global tidak menjadi masalah. Tapi apakah ada link tertentu relatif? Ya, mungkin ada perilaku tak terduga ketika menggunakan global. Tapi sebelum itu, backstory sedikit.

Dalam versi 4.2.0 direktif oleh register_globals bawaan berubah dari on-negara untuk off. Untuk kebanyakan pengguna, ini tidak terlalu penting, tetapi sia-sia. Setelah semua, secara langsung mempengaruhi keamanan produk yang dikembangkan. Jika Anda perlu membuat variabel global, PHP-direktif pada parameter ini tidak secara langsung terpengaruh. Namun, penggunaan yang salah sudah bisa menciptakan keamanan preseden.

Jadi jika register_globals diaktifkan, sebelum eksekusi kode yang ditulis diinisialisasi variabel yang berbeda yang diperlukan, misalnya untuk mengirim HTML-bentuk. Oleh karena itu, diputuskan untuk mematikannya.

Mengapa keadaan direktif ini di variabel global php berutang banyak? Faktanya adalah bahwa ketika keadaan pengembang tidak selalu dengan pasti bisa sendiri menjawab pertanyaan dari mana asalnya. Di satu sisi, lebih mudah untuk menulis kode. Tetapi di sisi lain - itu adalah resiko keamanan. Oleh karena itu, untuk menghindari kesalahan, serta data pencampuran dan direktif telah dinonaktifkan.

Sekarang mari kita lihat tidak / kode aman, serta cara mendeteksi kasus di mana pengumuman variabel PHP global yang disertai dengan upaya merusak data. Hal ini diperlukan dalam rangka menciptakan tidak hanya cantik, tetapi juga terus situs yang tidak retak orang pertama yang tersedia bekerja.

kode berbahaya

Mari kita menetapkan variabel yang berlaku bagi mereka yang telah resmi:

jika (authenticate_user ()) {
$ Otorisasi = true;
}

if ($ authorize) {
termasuk "/highly/sensitive/data.php";
}

Dalam keadaan ini, variabel dapat diatur secara otomatis. Mengingat bahwa data hanya dapat diganti, dan sumber asal mereka tidak diatur, maka siapa pun bisa lulus ujian tersebut dan berpura-pura menjadi orang lain. Jika diinginkan, penyerang (atau hanya ingin tahu tapi tidak berpengalaman orang) mungkin terganggu, logika kita.

Jika kita mengubah nilai direktif, kode ini akan bekerja dengan benar, seperti yang kita diperlukan. Tapi inisialisasi variabel tidak hanya nada yang baik dalam pemrograman, tetapi juga memberi kita jaminan tertentu stabilitas script.

versi handal dari kode

Anda dapat menonaktifkan atau arahan bekerja, atau meresepkan kode yang lebih kompleks untuk mencapai tujuan ini. Sebagai contoh, seperti ini:

if (isset ($ _ SESSION [ 'username'])) {

echo "Hello {$ _ SESSION [ 'username']} ";

} Lain {

echo "Hello Tamu
";
echo "Selamat pengguna!";

}

Membuat substitusi dalam kasus ini, ada akan sulit. Tapi masih - mungkin. Untuk melakukan ini, Anda harus berhati-hati bahwa alat respon cepat disediakan. Jika Anda ingin memasukkan variabel global di PHP, Anda dapat menggunakan alat-alat berikut: jika kita tahu apa yang rentang adalah nilai yang diperoleh, adalah mungkin untuk mendaftarkan script untuk memeriksa ini dengan pertandingan. Tentu saja, itu juga tidak menjamin perlindungan penuh terhadap nilai-nilai substitusi. Tapi itu terlalu banyak pilihan secara signifikan menyulitkan.

Menemukan upaya untuk menyamar

Mari kita lihat bagaimana Anda memahami ditulis sebelumnya. Dalam PHP variabel global dalam fungsi yang akan diberikan di bawah ini, Anda akan perlu untuk menyatakan diri. Kita dapat mengatakan bahwa ini adalah semacam pekerjaan rumah asimilasi topik pelajaran. Berikut adalah kode:

if (isset ($ _ COOKIE [ 'C_COOKIE'])) {
} Elseif (isset ($ _ GET [ 'C_COOKIE']) || isset ($ _ POST [ 'C_COOKIE'])) {

email ( "administrarot@example.com", "Perhatian, script tercatat upaya perampokan dan merusak data", $ _SERVER [ 'REMOTE_ADDR']);
echo "Ada keselamatan rusak atau mencoba untuk melakukannya diberitahu Administrator.";
exit;

} Lain {
}
?>

Sekarang penjelasan tambahan. Sebagian C_COOKIE datang kepada kita dari sumber yang dapat dipercaya. Untuk sepenuhnya puas sesuai dengan hasil yang diharapkan, kita periksa nilai dan memberitahu administrator dalam kasus masalah. Jika tidak datang, maka tidak ada tindakan dan tidak perlu membuat. Anda harus memahami bahwa hanya menonaktifkan direktif register_globals tidak membuat kode Anda aman. Oleh karena itu, setiap variabel yang menerima naskah dari pengguna, harus diperiksa untuk nilai yang diharapkan.

kesimpulan

Di sini, pada umumnya, dan segala sesuatu yang perlu Anda ketahui tentang variabel global untuk berhasil dan aman menggunakannya dalam pekerjaan mereka. Tentu saja, untuk mengatakan bahwa ada jaminan penuh bahwa tidak ada yang akan menggunakan mereka tidak bisa - penyerang terus-menerus meningkatkan metode dan keterampilan mereka. Oleh karena itu diinginkan untuk membatasi penggunaan maksimum variabel global dalam kode. Untungnya, struktur dan desain fitur dari bahasa pemrograman ini dapat mencapai tujuan ini. Good luck!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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