Jadual Kandungan
Apakah parameter URL bercelaru?
Penyelesaian kepada parameter URL bercelaru dalam PHP
1. Nyatakan pengekodan aksara secara eksplisit
2. Gunakan fungsi urlencode() untuk mengekod parameter URL
3 Gunakan $_REQUEST dan bukannya $_GET atau $_POST
Rumah pembangunan bahagian belakang masalah PHP Bincangkan sebab dan penyelesaian untuk parameter URL bercelaru yang diperolehi oleh PHP

Bincangkan sebab dan penyelesaian untuk parameter URL bercelaru yang diperolehi oleh PHP

Apr 11, 2023 pm 03:10 PM

Jika anda menulis aplikasi web menggunakan PHP, anda mungkin mengalami masalah parameter URL yang bercelaru. Sebab anda mendapat parameter URL yang kacau ialah apabila anda cuba mendapatkan parameter daripada URL dan menggunakannya, PHP mungkin tidak menghuraikan parameter dengan betul. Ini boleh menyebabkan beberapa tingkah laku yang tidak dijangka, dan jika tidak diperbaiki, ia boleh menyebabkan masalah yang lebih serius. Dalam artikel ini, kita akan bercakap tentang sebab PHP mendapat parameter URL yang kacau dan cara membetulkannya.

Apakah parameter URL bercelaru?

Parameter URL bercelaru bermakna apabila anda cuba membaca parameter daripada URL, PHP mungkin menghadapi beberapa masalah pengekodan aksara, menyebabkan keputusan akhir tidak dijangka. Ini biasanya disebabkan oleh tetapan pengekodan aksara yang salah apabila PHP menghuraikan parameter URL.

Sebagai contoh, katakan anda mempunyai URL berikut:

http://example.com/?q=%E4%B8%AD%E6%96%87
Salin selepas log masuk

Dalam URL ini, parameter q ialah %E4%B8%AD%E6%96%87. Ini ialah pengekodan perkataan "Bahasa Cina" selepas pengekodan URL, dan digunakan untuk menghantar aksara Cina dalam URL. Jika anda menghuraikan hujah ini dengan betul, anda sepatutnya mendapat 中文. Walau bagaimanapun, jika anda tidak mengendalikan parameter ini dengan betul, anda mungkin mendapat hasil lain, seperti %E4%B8%AD%E6%96%87 atau tiada langsung.

Ini biasanya berlaku apabila PHP tidak menetapkan pengekodan aksara dengan betul, mengakibatkan parameter URL bercelaru.

Penyelesaian kepada parameter URL bercelaru dalam PHP

Untuk menyelesaikan masalah parameter URL bercelaru dalam PHP, anda perlu mengikuti beberapa amalan terbaik. Berikut ialah beberapa cara untuk membetulkan parameter URL yang bercelaru.

1. Nyatakan pengekodan aksara secara eksplisit

Dalam PHP, gunakan fungsi urldecode() untuk menyahkod rentetan yang dikodkan URL ke dalam aksara yang diwakilinya.

Apabila mengendalikan parameter URL, pengekodan aksara mesti dinyatakan dengan jelas. Jika tiada pengekodan aksara dinyatakan, PHP menetapkannya kepada ISO-8859-1 secara lalai. Ini boleh menyebabkan masalah pengekodan aksara.

Oleh itu, untuk memastikan penghuraian parameter URL yang betul, anda harus menentukan pengekodan aksara secara eksplisit. Anda boleh menetapkan mb_internal_encoding() kepada pengekodan aksara yang anda perlukan, seperti UTF-8.

mb_internal_encoding("UTF-8");
Salin selepas log masuk

Sebagai alternatif, anda boleh menghantar jenis pengekodan melalui parameter URL dan menggunakan fungsi mb_convert_encoding() untuk menyahkodnya.

$encoded = $_GET["q"];
$decoded=mb_convert_encoding ( $encoded, "UTF-8", "auto" );
Salin selepas log masuk

2. Gunakan fungsi urlencode() untuk mengekod parameter URL

Untuk mengelakkan parameter URL daripada dikacau, anda harus sentiasa menggunakan fungsi urlencode() untuk mengekod parameter URL. Ini memastikan bahawa ia dikodkan dengan betul dan dihantar dengan betul dalam URL. Apabila menerima parameter, gunakan fungsi urldecode() untuk menyahkodnya.

$params = array(
    "q" => "中文",
    "page" => 1
);

$encoded_params = http_build_query($params);
$url = "http://example.com/?" . $encoded_params;
echo $url;

// 输出:http://example.com/?q=%E4%B8%AD%E6%96%87&page=1
Salin selepas log masuk

3 Gunakan $_REQUEST dan bukannya $_GET atau $_POST

Jika anda perlu membaca parameter URL daripada $_GET atau $_POST, anda harus menggunakan . $_REQUEST

Tatasusunan yang mengandungi data GET, POST dan COOKIE yang diserahkan dalam permintaan. Dengan cara ini anda tidak akan terlepas sebarang parameter dan mengelak daripada menggunakan tatasusunan yang salah menyebabkan isu pengekodan aksara. $_REQUEST

4. Tetapkan pengekodan aksara dalam fail .htaccess

Jika anda menggunakan pelayan Apache, anda boleh menetapkan pengekodan aksara dalam fail .htaccess.

AddDefaultCharset UTF-8
Salin selepas log masuk
Ini akan memastikan bahawa Apache menetapkan pengekodan aksara lalai kepada UTF-8, sekali gus mengelakkan isu pengekodan aksara.

Kesimpulan

Parameter URL bercelaru adalah masalah biasa dalam pembangunan aplikasi web. Masalah ini boleh dielakkan dengan berkesan jika anda menetapkan pengekodan aksara dengan betul, gunakan fungsi

untuk mengekod parameter URL dan gunakan tatasusunan urlencode() untuk mendapatkan parameter daripada permintaan. Jika anda memberi perhatian kepada amalan terbaik ini, anda boleh mengelakkan banyak masalah pengekodan aksara dan memastikan kebolehpercayaan program anda. $_REQUEST

Atas ialah kandungan terperinci Bincangkan sebab dan penyelesaian untuk parameter URL bercelaru yang diperolehi oleh PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1662
14
Tutorial PHP
1262
29
Tutorial C#
1235
24