PHP get方式傳遞引數小心掉坑

2021-07-05 07:36:58 字數 615 閱讀 5413

事情就發生在專案上線的第二天,我遠端呼叫了乙個介面,直接把前台查詢的引數拼接進行傳遞了,一般的也都是這樣吧 ,剛開始能查出資料,也沒在意,覺得調成功了,不用管了,第二天到了公司,產品那邊直接打**急催說那個資料有問題,我說我看看,除錯了幾遍,發現始終是那幾條資料,無論傳遞什麼引數,我突然想到了,引數進行urlencode轉換一下,資料可以正確顯示了,這個urlencode是必要的,看例子把:

這是沒有使用之前的,原來客戶輸入的查詢裡面帶有 while & prog我天,這不是坑人嗎?這樣肯定被php解析成引數了

可以看個例子:

明顯php看到了&就進行了引數解析,使用urlencode進行轉換之後  &變成十六進製制的%26  空格會變成+  如果使用rawurlencode 空格變成%20:

就是這樣的坑,大家注意了。

引數傳遞方式

1 pass by value 單向傳遞 形參改變 實參不變 2 pass by address pointer 雙向傳遞 形參改變 實參改變 3 pass by reference 雙向傳遞 形參改變 實參改變 c pass by value 單向傳遞 形參改變 實參不變 void swap1 i...

Java引數傳遞方式

如果方法a呼叫方法b,如果方法 的引數是基本資料型別或者string型別,那麼方法 向方法b傳遞引數的值,如果方法 的引數是物件或者陣列,那麼,方法 向方法b傳遞引數的引用。例子如下 public class variabletest changeparameter param1,param2,pa...

python引數傳遞方式

如果函式接收到的引數是乙個可變物件 類型別,列表,字典 就會改變物件的原始值。如果函式接收到的引數是乙個不可變物件,即基本資料型別 數值型,字串,布林 就不會改變物件的原始值。無論什麼引數,都是傳引用,只不過基本資料型別的賦值其實是重新構造並指向了乙個新的物件,記憶體位址不一樣,可以用id 來查詢記...