PHP menyediakan dua fungsi referensi ajaib magic_quotes_gpc dan magic_quotes_runtime yang memudahkan kita untuk mengutip data. Jika kedua fungsi ini disetel ke ON di php.ini, keduanya akan menemukan tanda kutip tunggal ', tanda kutip ganda " dan garis miring terbalik untuk data yang kita kutip. baris secara otomatis ditambahkan dengan garis miring terbalik untuk membantu kami menerjemahkan simbol secara otomatis dan memastikan pengoperasian operasi data yang benar. Namun, dalam versi PHP yang berbeda atau konfigurasi server yang berbeda, beberapa magic_quotes_gpc dan magic_quotes_runtime disetel ke aktif, dan ada pula yang disetel ke aktif. .off, jadi program yang kita tulis harus memenuhi syarat on dan off. Lalu apa perbedaan antara fungsi magic_quotes_gpc dan magic_quotes_runtime? Lihat uraian berikut:
Cakupanmagic_quotes_gpc
adalah: WEB client server;
Waktu tindakan: Permintaan dimulai, misalnya saat skrip dijalankan.
Magic_quotes_runtime
: data yang dibaca dari file atau hasil eksekusi exec() atau diperoleh dari query SQL;
Waktu tindakan: setiap kali skrip mengakses data yang dihasilkan dalam keadaan berjalan.
Oleh karena itu, nilai pengaturan magic_quotes_gpc akan mempengaruhi data yang diperoleh melalui Get/Post/Cookies; nilai pengaturan magic_quotes_runtime akan mempengaruhi data yang dibaca dari file atau data yang diperoleh dari query database.
Contoh:
<form action="" method="post" >
STR:<input type="teks" nama="str">
<tipe masukan="kirim">
</bentuk>
<?php
/* Kita isi form: '" Simbol-simbol ini, jika magic_quotes_gpc tidak diaktifkan, maka tidak akan di-escape dengan backslash*/
echo 'Nilai yang dilewatkan melalui POST sekarang adalah:' ,$_POST['str'], '<br />';
if (get_magic_quotes_gpc()) { // Periksa apakah magic_quotes_gpc diaktifkan adil
$str = $_POST['str'];
} kalau tidak {
$str = menambahkan garis miring($_POST['str']);
}
echo 'Ini adalah versi yang lolos:' ,$str, '<hr />';
$sql = "MASUKKAN KE DALAM NILAI nama belakang (nama belakang) ('$str')";
//============== = ===== =======
//-----magic_quotes_gpc hanya akan lolos: data www.devdao.com diperoleh melalui Get/Post/Cookies
//-----magic_quotes_runtime akan lolos: data dibaca dari file atau hasil eksekusi exec() atau diperoleh dari query SQL
//------------------------------------------------ =======
$data = implode(file('try.php')); // Kami masih menulis karakter '" di dalamnya untuk pengujian
echo 'Ini data try.php,';
jika (get_magic_quotes_runtime()) {
$data = $data;
echo 'lolos dari sistem' .$data;
} kalau tidak {
echo 'lolos dari addlashes' .$data = addlashes($data);
}
$sql = "MASUKKAN KE DALAM nama belakang (nama belakang) NILAI ('$data')";
echo '<br />Pernyataan SQL adalah:<br />' ,$sql;
//---Semuanya di-escape saat masuk ke database, namun ada tambahan garis miring terbalik. Saat kita ingin membaca data asli, gunakan striplashes() untuk menghilangkan garis miring terbalik.
//---stripslashes() dan addlashes() memiliki efek berlawanan
?>Perbedaan yang paling penting adalah dua poin yang disebutkan di atas: keduanya menargetkan objek pemrosesan yang berbeda. Nilai pengaturan magic_quotes_gpc akan mempengaruhi data yang diperoleh melalui Get/Post/Cookies. Nilai pengaturan magic_quotes_runtime akan mempengaruhi pembacaan dari file diperoleh atau data yang diperoleh dari query database disebutkan di sini dengan cara: set_magic_quotes_runtime(): Tetapkan nilai magic_quotes_runtimeget_magic_quotes_gpc( ): Periksa nilai magic_quotes_gpc. 0 = Tutup. 1 = Buka. get_magic_quotes_runtime (): Periksa nilai magic_quotes_runtime. 0=mati. 1=aktif. Perhatikan bahwa tidak ada fungsi set_magic_quotes_gpc(), yaitu nilai magic_quotes_gpc tidak dapat disetel dalam program.