簡體   English   中英

通過urlencode編碼的url中傳遞的json字符串

[英]json string passed in url which is encoded by urlencode

我正在使用CodeIgniter3.x。

用戶具有以下數據: %7B%5C%22uid%5C%22%3A%5C%221234%5C%22%2C%5C%22uname%5C%22%3A%5C%22kishor%5C%22%7D

用戶向我發送請求,並將數據作為參數傳遞給url。 url中的最后一個參數不過是用戶數據。

http://localhost/codeigniter/myproject/myfunction/%7B%5C%22uid%5C%22%3A%5C%221234%5C%22%2C%5C%22uname%5C%22%3A%5C%22kishor%5C%22%7D

編碼的數據只不過是他想要編碼的json字符串,然后向我發送請求。 如果我使用php解析它,則會產生以下內容: '{"uid":"1234","uname":"kishor"}'

但是它在URL中不被接受,它給了我Object not found! 瀏覽器錯誤。

找不到對象!

在此服務器上找不到請求的URL。 如果您手動輸入網址,請檢查拼寫,然后重試。

如果您認為這是服務器錯誤,請與網站管理員聯系。 錯誤404

我嘗試更改$config['permitted_uri_chars'] = 'az 0-9~%.:_\\-'; ,但對我不起作用。

假設您的CodeIgniter設置正確且路由正確,則建議將JSON作為$_GET參數發送:

http://localhost/codeigniter/myproject/myfunction/?json=%7B%5C%22uid%5C%22%3A%5C%221234%5C%22%2C%5C%22uname%5C%22%3A%5C%22kishor%5C%22%7D

因此,在CodeIgniter中,您應該能夠簡單地:

json_decode( $this->input->get( 'json' ) );

如果通過以下方式,則必須在函數中傳遞參數。

http://localhost/codeigniter/myproject/myfunction/%7B%5C%22uid%5C%22%3A%5C%221234%5C%22%2C%5C%22uname%5C%22%3A%5C%22kishor%5C%22%7D

像這樣

function myfunction($param = ''){ echo $params; }

您通過的方式不正確。 如果需要獲取並解碼該值,請在控制器功能中使用以下方法

我不知道您的代碼中哪個是控制器和功能,我想myproject是一個控制器。 所以,我在segment傳遞了第三個參數3

// it will return %7B%5C%22uid%5C%22%3A%5C%221234%5C%22%2C%5C%22uname%5C%22%3A%5C%22kishor%5C%22%7D
$json_value = $this->uri->segment(3); 
$json_value = (array) json_decode(stripslashes(urldecode($json_value)));

var_export($json_value);

輸出

array (
  'uid' => '1234',
  'uname' => 'kishor',
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM