首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP URL 安全 Base64 編解碼:解決特殊字符傳輸難題

     編輯:PHP 相關知識

標準 base64_encode 產生的 +、/、= 在 URL 中會導致解析錯誤,需轉換為 URL 安全字符集。

編碼函數

function urlsafe_b64encode($string) {
    $data = base64_encode($string);
    $data = str_replace(['+', '/', '='], ['-', '_', ''], $data);
    return $data;
}

解碼函數

function urlsafe_b64decode($string) {
    $data = str_replace(['-', '_'], ['+', '/'], $string);
    $mod4 = strlen($data) % 4;
    if ($mod4) {
        $data .= substr('====', $mod4); // 補齊 padding
    }
    return base64_decode($data);
}

核心邏輯解析

步驟編碼解碼
1標準 Base64 編碼還原安全字符到標準字符
2+ → -、/ → _、= → 移除計算長度模 4,補齊 =
3返回安全字串標準 Base64 解碼

應用場景

  • URL 參數傳遞加密數據
  • API Token 生成與驗證
  • 單點登入(SSO)票據傳遞
  • 郵件驗證鏈接參數加密

測試驗證

$original = 'user_id=123&action=pay&amount=99.9';
$encoded = urlsafe_b64encode($original);
$decoded = urlsafe_b64decode($encoded);

echo "原文: $original\n";
echo "編碼: $encoded\n";
echo "解碼: $decoded\n";
echo "驗證: " . ($original === $decoded ? '通過' : '失敗') . "\n";

注意事項

  • 解碼時必須補齊 padding,否則解碼失敗
  • 適用於短字串,大數據建議用 AES 加密後再 Base64
  • 非加密手段,僅為編碼,敏感數據請配合加密算法使用
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved