Teka-teki Petikan Ajaib dalam WordPress
Walaupun melumpuhkan petikan ajaib PHP (disahkan oleh get_magic_quotes_gpc() mengembalikan 0), data POST masih terlepas . Isu ini timbul apabila WordPress disepadukan ke dalam pemasangan berbilang tapak.
Peranan WordPress dalam Auto-Escaping
Punca pelarian automatik terletak dalam pangkalan kod WordPress. Pepijat (tiket #18322) dalam WordPress cuba untuk membersihkan input walaupun petikan ajaib dilumpuhkan. Penyelesaiannya ialah dengan secara eksplisit menanggalkan garis miring daripada data input secara manual, seperti yang dicadangkan dalam codex.
Melucuti Garis Miring Dengan Dalam
Untuk menyelesaikan isu tersebut, garis miring dalam daripada superglobal tatasusunan ($_GET, $_POST, $_COOKIE, $_SERVER dan $_REQUEST) menggunakan fungsi stripslashes_deep():
<code class="php">$_GET = array_map('stripslashes_deep', $_GET); $_POST = array_map('stripslashes_deep', $_POST); $_COOKIE = array_map('stripslashes_deep', $_COOKIE); $_SERVER = array_map('stripslashes_deep', $_SERVER); $_REQUEST = array_map('stripslashes_deep', $_REQUEST);</code>
Pendekatan Alternatif
Sebagai alternatif, pertimbangkan untuk menggunakan array_map() secara setempat pada tatasusunan tertentu dan bukannya mengatasi superglobal:
<code class="php">$post = array_map('stripslashes_deep', $_POST);</code>
Pertimbangan
Mengubah suai superglobal seperti yang ditunjukkan di atas mungkin mempunyai implikasi untuk aplikasi anda. Jika konteks khusus membenarkan, pertimbangkan pelucutan terpilih untuk mengekalkan integriti data. Rujuk rujukan yang disediakan untuk mendapatkan cerapan tambahan.
Atas ialah kandungan terperinci Mengapa Data POST WordPress Saya Melarikan Diri Walaupun Selepas Melumpuhkan Petikan Ajaib?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!