Rumah pembangunan bahagian belakang tutorial php Yaf中地图路由下delimiter的有关问题

Yaf中地图路由下delimiter的有关问题

Jun 13, 2016 pm 12:23 PM
query str uri

Yaf中map路由下delimiter的问题

  由于map路由下用户请求的url会按照"/"分级对应到controllers下的目录下的Controller上,action则默认为indexAction,所以想要实现/key1/param1/key2/param2这种形式进行传参,就要通过delimiter来讲url分割成req_uri和query_str两个部分。

  在实践中,定义了delimiter(尽管并没有用到它的功能),这时,如果用户的请求(更多的是爬虫或扫站)无意中包含以下形式:/aaa/bbb[delimiter](xxx)?/key1/param1/key2/param2...,会造成程序崩溃。

  将这个问题提给鸟哥后,鸟哥迅速给出了修复(18~19行):

 

<span style="color: #008080;"> 1</span> <span style="color: #0000ff;">if</span> (Z_TYPE_P(delimer) == <span style="color: #008080;">IS_STRING</span><span style="color: #008080;"> 2</span>             &&<span style="color: #000000;"> Z_STRLEN_P(delimer)) {</span><span style="color: #008080;"> 3</span>         <span style="color: #0000ff;">if</span> ((query_str = <span style="color: #008080;">strstr</span>(req_uri, Z_STRVAL_P(delimer))) != <span style="color: #0000ff;">NULL</span><span style="color: #008080;"> 4</span>             && *(query_str - 1) == '/'<span style="color: #000000;">) {</span><span style="color: #008080;"> 5</span>             tmp  =<span style="color: #000000;"> req_uri;</span><span style="color: #008080;"> 6</span>             rest = query_str +<span style="color: #000000;"> Z_STRLEN_P(delimer);</span><span style="color: #008080;"> 7</span>             <span style="color: #0000ff;">if</span> (*rest == '\0'<span style="color: #000000;">) {</span><span style="color: #008080;"> 8</span>                 req_uri     = estrndup(req_uri, query_str -<span style="color: #000000;"> req_uri);</span><span style="color: #008080;"> 9</span>                 query_str     = <span style="color: #0000ff;">NULL</span><span style="color: #000000;">;</span><span style="color: #008080;">10</span> <span style="color: #000000;">                efree(tmp);</span><span style="color: #008080;">11</span>             } <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> (*rest == '/'<span style="color: #000000;">) {</span><span style="color: #008080;">12</span>                 req_uri     = estrndup(req_uri, query_str -<span style="color: #000000;"> req_uri);</span><span style="color: #008080;">13</span>                 query_str   =<span style="color: #000000;"> estrdup(rest);</span><span style="color: #008080;">14</span> <span style="color: #000000;">                efree(tmp);</span><span style="color: #008080;">15</span>             } <span style="color: #0000ff;">else</span><span style="color: #000000;"> {</span><span style="color: #008080;">16</span>                 query_str = <span style="color: #0000ff;">NULL</span><span style="color: #000000;">;</span><span style="color: #008080;">17</span> <span style="color: #000000;">            }</span><span style="color: #008080;">18</span>         } <span style="color: #0000ff;">else</span><span style="color: #000000;"> {</span><span style="color: #008080;">19</span>             query_str = <span style="color: #0000ff;">NULL</span><span style="color: #000000;">;</span><span style="color: #008080;">20</span>         }
Salin selepas log masuk

通过delimer获取了query_str后,判断delimer的前一个字符是"/"的情况,却没有判断不是的情况,导致不符合/aaa/bbb/[delimer]/key1/param1/...形式的urk被截断成req_uri和query_str去解析,所以程序出现了问题。

  感谢鸟哥快速的答复!

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)

Cara menyusun semula berbilang lajur dalam Power Query melalui seret dan lepas Cara menyusun semula berbilang lajur dalam Power Query melalui seret dan lepas Mar 14, 2024 am 10:55 AM

Dalam artikel ini, kami akan menunjukkan kepada anda cara menyusun semula berbilang lajur dalam PowerQuery dengan menyeret dan melepaskan. Selalunya, apabila mengimport data daripada pelbagai sumber, lajur mungkin tidak berada dalam susunan yang diingini. Menyusun semula lajur bukan sahaja membolehkan anda menyusunnya dalam susunan logik yang sesuai dengan keperluan analisis atau pelaporan anda, ia juga meningkatkan kebolehbacaan data anda dan mempercepatkan tugas seperti menapis, mengisih dan melakukan pengiraan. Bagaimana untuk menyusun semula berbilang lajur dalam Excel? Terdapat banyak cara untuk menyusun semula lajur dalam Excel. Anda hanya boleh memilih pengepala lajur dan seret ke lokasi yang dikehendaki. Walau bagaimanapun, pendekatan ini boleh menjadi rumit apabila berurusan dengan jadual besar dengan banyak lajur. Untuk menyusun semula lajur dengan lebih cekap, anda boleh menggunakan editor pertanyaan yang dipertingkatkan. Mempertingkatkan pertanyaan

Bagaimana untuk memintas uri di lokasi nginx Bagaimana untuk memintas uri di lokasi nginx May 18, 2023 pm 12:07 PM

Nota: Arahan akar dan akar alias di lokasi hanya menetapkan akar carian ke direktori yang ditetapkan oleh akar, iaitu uri tidak akan dipotong Sebaliknya, uri asal akan digunakan untuk melompat ke direktori untuk mencari fail Arahan aias akan memotong uri yang sepadan, dan kemudian Gunakan laluan yang ditetapkan oleh alias ditambah dengan baki uri sebagai sub-laluan untuk mencari uri proxy_pass di lokasi Jika url proxy_pass tidak mempunyai uri, jika ekornya ialah "/. ", uri yang sepadan akan dipotong. Jika ekornya bukan "/", maka Tidak akan memotong uri yang sepadan jika url proxy_pass mengandungi uri

Pemalam pangkalan data React Query: cara mengimport dan mengeksport data Pemalam pangkalan data React Query: cara mengimport dan mengeksport data Sep 26, 2023 pm 05:37 PM

Pemalam pangkalan data ReactQuery: Kaedah untuk melaksanakan import dan eksport data, contoh kod khusus diperlukan Dengan aplikasi ReactQuery yang meluas dalam pembangunan bahagian hadapan, semakin ramai pembangun mula menggunakannya untuk mengurus data. Dalam pembangunan sebenar, kita selalunya perlu mengeksport data ke fail tempatan atau mengimport data daripada fail tempatan ke dalam pangkalan data. Untuk melaksanakan fungsi ini dengan lebih mudah, anda boleh menggunakan pemalam pangkalan data ReactQuery. Pemalam pangkalan data ReactQuery menyediakan satu siri kaedah

Bagaimana untuk memisahkan data kepada NTFS menggunakan Power Query Bagaimana untuk memisahkan data kepada NTFS menggunakan Power Query Mar 15, 2024 am 11:00 AM

Artikel ini akan memperkenalkan cara menggunakan PowerQuery untuk memisahkan data kepada baris. Apabila mengeksport data daripada sistem atau sumber lain, adalah perkara biasa untuk menghadapi situasi di mana data disimpan dalam sel yang menggabungkan berbilang nilai. Dengan PowerQuery, kami boleh membahagikan data sedemikian ke dalam baris dengan mudah, menjadikan data lebih mudah untuk diproses dan dianalisis. Ini boleh berlaku jika pengguna tidak memahami peraturan Excel dan secara tidak sengaja memasukkan berbilang data ke dalam sel, atau jika data tidak diformat dengan betul semasa menyalin/menampalkannya daripada sumber lain. Memproses data ini memerlukan langkah tambahan untuk mengekstrak dan menyusun maklumat untuk analisis atau pelaporan. Bagaimana untuk memisahkan data dalam PowerQuery? Transformasi PowerQuery boleh berdasarkan pelbagai faktor berbeza seperti perkataan

Analisis kod sumber str jenis terbina dalam Python Analisis kod sumber str jenis terbina dalam Python May 09, 2023 pm 02:16 PM

1Unit asas storan komputer Unicode ialah bait, yang terdiri daripada 8 bit. Memandangkan bahasa Inggeris hanya terdiri daripada 26 huruf ditambah beberapa simbol, aksara Inggeris boleh disimpan terus dalam bait. Tetapi bahasa lain (seperti Cina, Jepun, Korea, dll.) perlu menggunakan berbilang bait untuk pengekodan kerana bilangan aksara yang banyak. Dengan penyebaran teknologi komputer, teknologi pengekodan aksara bukan Latin terus berkembang, tetapi masih terdapat dua batasan utama: tiada sokongan berbilang bahasa: skema pengekodan satu bahasa tidak boleh digunakan dalam bahasa lain dan tiada standard bersatu: contohnya Terdapat banyak piawaian pengekodan dalam bahasa Cina seperti GBK, GB2312, GB18030, dsb. Memandangkan kaedah pengekodan tidak bersatu, pembangun perlu menukar berulang-alik antara pengekodan yang berbeza, dan banyak ralat pasti akan berlaku.

Pengecaman niat pertanyaan berdasarkan peningkatan pengetahuan dan model besar yang telah dilatih sebelumnya Pengecaman niat pertanyaan berdasarkan peningkatan pengetahuan dan model besar yang telah dilatih sebelumnya May 19, 2023 pm 02:01 PM

1. Latar Belakang Pengenalan Pendigitalan perusahaan merupakan topik hangat dalam beberapa tahun kebelakangan ini Ia merujuk kepada penggunaan teknologi digital generasi baharu seperti kecerdasan buatan, data besar dan pengkomputeran awan untuk mengubah model perniagaan perusahaan, dengan itu menggalakkan pertumbuhan baharu dalam perniagaan perusahaan. . Pendigitalan perusahaan secara amnya merangkumi pendigitalan operasi perniagaan dan pendigitalan pengurusan perusahaan. Perkongsian ini terutamanya memperkenalkan pendigitalan tahap pengurusan perusahaan. Pendigitalan maklumat, secara ringkasnya, bermaksud membaca, menulis, menyimpan dan menghantar maklumat secara digital. Daripada dokumen kertas sebelum ini kepada dokumen elektronik semasa dan dokumen kerjasama dalam talian, pendigitalan maklumat telah menjadi kebiasaan baharu di pejabat hari ini. Alibaba kini menggunakan Dokumen DingTalk dan Dokumen Yuque untuk kerjasama perniagaan, dan bilangan dokumen dalam talian telah mencecah lebih 20 juta. Di samping itu, banyak syarikat akan secara dalaman

Apakah persamaan dan perbezaan antara __str__ dan __repr__ dalam Python? Apakah persamaan dan perbezaan antara __str__ dan __repr__ dalam Python? Apr 29, 2023 pm 07:58 PM

Apakah persamaan dan perbezaan antara __str__ dan __repr__? Kita semua tahu perwakilan rentetan fungsi repr() boleh menyatakan objek dalam bentuk rentetan untuk memudahkan pengenalan kita. Ini ialah "perwakilan rentetan". repr() mendapatkan perwakilan rentetan objek melalui kaedah khas __repr__. Jika __repr__ tidak dilaksanakan, apabila kita mencetak contoh vektor ke konsol, rentetan yang terhasil mungkin. >>>classContoh:lulus>>>cetak(str(Contoh()))>>>

Apakah peraturan padanan URI arahan Lokasi Nginx? Apakah peraturan padanan URI arahan Lokasi Nginx? May 14, 2023 pm 11:58 PM

1. Pengenalan Arahan lokasi ialah konfigurasi teras modul http Ia menerima permintaan yang dihantar oleh pengguna berdasarkan peraturan pemadanan URL yang dipratentukan Berdasarkan hasil padanan, permintaan dimajukan kepada pelayan bahagian belakang secara langsung ditolak dan dikembalikan 403. 404, 500 pengendalian ralat, dsb. 2. Lokasi sintaks arahan lokasi[=|~|~*|^~|@]/uri/{…} atau lokasi@nama{…} 3. Mod padanan URI Arahan lokasi dibahagikan kepada dua mod padanan: 1> Biasa aksara Padanan rentetan: peraturan bermula dengan = atau tanpa aksara utama (~) 2> Padanan biasa: bermula dengan ~ atau ~* menunjukkan padanan biasa, ~*

See all articles