[PHP-users 12796] Re: URLエンコードされた文字列に対する処理

Youichi Iwakiri php-users@php.gr.jp
Fri, 24 Jan 2003 18:39:01 +0900


いわきりです

HOTTA Michihide wrote in <20030124150838.6106.HOTTA@net-newbie.com> :
>堀田@諫早市です。
>> 日本語での情報であれば、下記を見てください。
>> [PHP-dev 492] Re: users に流した mbstring.c パッチにバグがありました
>> [PHP-users 9905] Re: エンコーディング自動変換バグ(was Re: PHP 4.2.3
>> で4  バイト以下の配列の変数値が取れない)で、説明があります。
>このことでしたか。

urlのdecodeが二重に行われるという、問題提起ではなかったので、
判り辛く、多くの人が認識していなかったかもしれませんね。

修正前(php-4.2.3のmbstring.c)が、
    strtok_buf = NULL;
    var = php_strtok_r(res, separator, &strtok_buf);
    while (var)  {
        val = strchr(var, '=');
        val_list[n] = var;
        len_list[n] = php_url_decode(var, strlen(var));    // 1回目のdecode
        n++;
        if (val) { /* have a value */
            *val++ = '\0';
            val_list[n] = val;
            len_list[n] = php_url_decode(val, strlen(val)); // 2回目のdecode
        } else {
            val_list[n] = "";
            len_list[n] = 0;        
        }
        n++;
        var = php_strtok_r(NULL, separator, &strtok_buf);
    } 

となっており、2重にdecodeされています。
そのため、石井さんがご指摘下さったように、漢字コードの判定も
失敗していたようです。

-- 
Youichi Iwakiri