URLのパラメータに"+"文字がある場合空白になる
■事象
URLのパラメータに"+"文字がある場合空白になってエラーになっていた
作業的にはログインIDとPASSを暗号化したURL等を確認していた
可逆暗号化のための準備
<暗号化方法>
base64でエンコード→mcrypt_genericで暗号化→base64でエンコード
<復号化方法>
base64でデコード→mdecrypt_genericで復号化→base64でデコード
■空だよの下記エラー
Warning: mdecrypt_generic() [function.mdecrypt-generic]: An empty string was passed in /www/XXX.php on line 87
Warning: mdecrypt_generic() [function.mdecrypt-generic]: An empty string was passed in /www/XXX.php on line 88
■該当箇所のソース
//パラメータ取得if(isset($_GET["login_id"]) && $_GET["login_id"]){
$loginId = $_GET["login_id"];
}
if(isset($_GET["login_pass"]) && $_GET["login_pass"]){
$loginPass = $_GET["login_pass"];
}
~省く~
/** 復号化
*/
//ID・PASSの復号化//エラー該当箇所の87行目
$dec_str_id = mdecrypt_generic($td, base64_decode($loginId));
$dec_str_pass = mdecrypt_generic($td, base64_decode($loginPass));
php側のグローバル関数の$_GETがURLを自動でurldecodeしていた。
■超絶わかりやすかったサイト
■似た現象のサイト
→rewriteRuleで解決してる
→POSTで解決している
→URLをエンコードしないといけないのね。
■PHPで自動変換事例
→PHP は“.”(ドット)を“_”(アンダースコア)に自動的に変換する事例
→上記の旨を記載している本家PHP説明サイト
PHP: 外部から来る変数 - Manual
■URLエンコードサイト
このブログへのコメントは muragonにログインするか、
SNSアカウントを使用してください。