Dengan pembangunan aplikasi web yang berterusan, AJAX (Asynchronous JavaScript and XML) menjadi semakin biasa. JSONP (JSON dengan Padding) ialah protokol interaksi AJAX umum. Ia membenarkan permintaan data daripada pelayan domain yang berbeza dan biasanya digunakan dalam JavaScript.
Dalam PHP, jika anda perlu mengesahkan input berformat JSONP daripada domain lain, anda perlu menghuraikannya dengan betul. Proses ini boleh dicapai menggunakan ungkapan biasa. Dalam artikel ini, kami akan meneroka cara menggunakan ungkapan biasa dalam PHP untuk mengesahkan input dalam format JSONP.
Input dalam format JSONP
Sebelum membincangkan secara mendalam cara mengesahkan format JSONP, mari kita perkenalkan secara ringkas input dalam format JSONP.
Apabila klien menggunakan format JSONP untuk mendapatkan data, ia akan membuat permintaan kepada pelayan Selepas menerima permintaan, pelayan akan membungkus data dalam fungsi panggil balik dan menghantarnya semula kepada klien. Dengan cara ini, pelanggan boleh melakukan pemprosesan data apabila menerima fungsi panggil balik.
Sebagai contoh, jika pelanggan meminta pelayan untuk mendapatkan data pengguna bernama "klien" melalui JSONP, ia akan menghantar permintaan yang serupa dengan kod berikut:
https://example.com/user.php?callback=client
Pelayan perlu mendapatkan data pengguna bernama "klien" mengikut permintaan Nama fungsi panggil balik panggilan balik membungkus data pengguna dalam panggilan fungsi dan mengembalikan kod JavaScript yang sepadan. Contohnya:
client({"name":"Tom","age":18,"gender":"male"});
Jika nama fungsi panggil balik mengandungi aksara yang menyalahi undang-undang atau dalam format yang salah, data tidak akan diproses dengan betul. Oleh itu, nama fungsi panggil balik perlu disahkan pada bahagian pelayan.
Gunakan ungkapan biasa untuk mengesahkan input dalam format JSONP
Di bawah kami akan menggunakan contoh untuk menggambarkan cara menggunakan ungkapan biasa untuk mengesahkan input dalam format JSONP.
Langkah pertama ialah mendapatkan nama fungsi panggil balik. Kita perlu mendapatkan nilai panggil balik daripada URL yang diminta. Dalam PHP, kita boleh mendapatkan parameter URL melalui $_GET.
$callback = isset($_GET['callback']) ? $_GET['callback'] : '';
Langkah kedua ialah mengesahkan nama fungsi panggil balik. Kita perlu memastikan ia hanya mengandungi aksara yang dibenarkan. Dalam JSONP, hanya aksara abjad angka dan garis bawah dibenarkan dalam nama fungsi panggil balik. Kami boleh menggunakan ungkapan biasa untuk mengesahkan.
if (preg_match('/^[a-zA-Z0-9_]+$/', $callback)) { // 正确格式的回调函数名称 } else { // 非法的回调函数名称 }
Ungkapan biasa di atas boleh ditafsirkan sebagai:
Ungkapan biasa ini hanya sepadan dengan nama fungsi panggil balik yang mengandungi aksara alfanumerik dan garis bawah, sambil mengabaikan aksara lain. Jika nama fungsi panggil balik mengandungi aksara lain, pengesahan akan gagal.
Kesimpulan
Dalam PHP, sangat mudah untuk menggunakan ungkapan biasa untuk mengesahkan input dalam format JSONP. Anda hanya perlu mendapatkan nama fungsi panggil balik dan mengesahkannya menggunakan ungkapan biasa. Ini membantu memastikan tiada masalah memproses input berformat JSONP apabila pelayan menerima permintaan.
Walau bagaimanapun, perlu diingatkan bahawa ungkapan biasa tidak menjamin keselamatan data sepenuhnya. Oleh itu, apabila memproses data input, kami juga perlu melakukan semakan keselamatan lain, seperti panjang input, suntikan SQL atau serangan XSS, dsb.
Atas ialah kandungan terperinci Bagaimana untuk mengesahkan input berformat JSONP menggunakan ungkapan biasa dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!