發表文章

目前顯示的是 3月, 2017的文章

PHP parse_str 遇到的問題

問題 parse_str 在解析+時的問題會解析成 ,但依據RFC 3986規範不應該這樣,應解析為+。 狀況 解析 QueryString 後拿到的值去做加密驗證時一直失敗。 解決 此方法無法處理含有陣列的QueryString // 等我有哪天無聊再來弄吧!! 改進了一個function達成。 從PHP 官方的討論中找出程式片段並改進 function parseQueryString($str) { $op = array(); $pairs = explode('&', $str); foreach ($pairs as $pair) { list($k, $v) = array_map('rawurldecode', explode('=', $pair)); $op[$k] = $v; } return $op; } 因為rawurldecode不會將+換成 總結與心得 找查許久之後才發現parse_str在解析QueryString會對其值做urldecode(),而、PHP對+做urldecode()時會轉換成 ,但是依據RFC 3986規範應解析成+於是使用rawurldecode()代替。 下次再做加解密時若有用到 parse_str 或是 urlencode/urldecode 時要注意來源或目的的url加密格式(主要差別在於+是轉換成 還是 )。 補充 取代http_build_query // 也是用urlencode function buildQueryString(array $arr) { $op = array(); foreach ($arr as $key => $val) { list($k, $v) = array_map('rawurlencode', array($key, $val)); array_push($op, "{$k}={$v}"); } return implode('&', $op); }

強迫 Git分支 Reset 到另一個分支的方法

git branch -f nimo master

mobile Safari 連結撃點無效問題

Safari 會判斷html標籤上面是不是有 cursor:pointer; 的屬性,所以在你的tag上加上css => cursor:pointer;

PHP Curl 送Xml的方法

在curl參數header中加入傳送類型 curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: text/xml"));