## 一、使用base64_encode()與base64_decode() 推薦?
在 BASE64 編碼后的字符串只包含英文字母大小寫、阿拉伯數字、加號與反斜線,共 64 個基本字符,不包含其它特殊的字符,因而才取名 BASE64。編碼后的字符串比原來的字符串長度再加 1/3 左右。更多的 BASE64 編碼信息可以參考 RFC2045 文件之 6.8 節。
示例:
~~~
$pw = base64_encode('id=5&action=get');
echo $pw; // aWQ9NSZhY3Rpb249Z2V0
echo base64_decode($pw); // id=5&action=get
~~~
## 二、urlencode()與urldecode(?)
返回字符串,此字符串中除了 -_. 之外的所有非字母數字字符都將被替換成百分號(%)后跟兩位十六進制數,空格則編碼為加號(+)。此編碼與 WWW 表單 POST 數據的編碼方式是一樣的,同時與 application/x-www-form-urlencoded 的媒體類型編碼方式一樣。
示例:
~~~
$pw = urlencode('id=5&action=get');
echo $pw; // id%3D5%26action%3Dget
echo urldecode($pw); // id=5&action=get
~~~
## 三、rawurlencode()與rawurldecode(?)
特殊的字符會轉換成百分比符號后面加上二個十六位數字的格式。例如,空格就會變成 %20。
示例:
~~~
$pw = rawurlencode('id=5&action=get');
echo $pw; // id%3D5%26action%3Dget
echo rawurldecode($pw); // id=5&action=get
~~~
## 四、附加?
以上三種方式都可以加鹽處理,如?:
~~~
$salt = '&time='.time();
$pw = base64_encode('id=5&action=get'.$salt);
echo $pw;
echo base64_decode($pw);
~~~