[PHP-users 17756]Re: 数字のみのBASE64エンコード

Y.Watanabe yuw @ msj.biglobe.ne.jp
2003年 9月 9日 (火) 13:09:28 JST


渡辺です。

いちろう たこす wrote on 2003/09/09 10:15
with Subject: [PHP-users 17740] 数字のみのBASE64エンコード

>会員サイトで会員のIDをGETでスクリプトに渡す処理で
>そのIDをなるべく外部の人に見せないようにするため
>にBASE64にてエンコードして渡しています。(本来なら
>URLエンコード?)ところが調べた
>ところBASE64で使われる文字でスラッシュ(+も?)が渡す
>文字列に混じると誤作動することがわかりました。いまの
>ところ会員IDは数字しか使ってないから?問題なくいっ
>ているような感じなんですが、数字のみをエンコードする
>ならこの方法でも問題ないでしょうか?それと、スラッシュ
>関係でもう1つ、xxx.phpの後ろにスラッシュを付けて
>例えば下記のようなURLを実行すると何故か、ページ
>の画像のみ削げ落ちてHTMLは見れてしまいます。何故で
>しょうか?
>
>http://hogehoge.com/index.php/www.yhaoo.co.jp

スラッシュから先は環境変数 PATHINFO 扱いになるからです。
http://mm.apache.or.jp/pipermail/apache-users/2002-February/001039.html

「+」も、CGI変数においては空白(半角スペース)な文字列として取り扱われるはず。

お察しの通り、urlencode() やurldecode()などを駆使するしかないでしょうね。


ただし、

>会員サイトで会員のIDをGETでスクリプトに渡す処理で
>そのIDをなるべく外部の人に見せないようにするため

っていう設計それ自体がなんかヘンに感じるのは僕だけ?
外部の人に見せないようにしたいのなら
phpのセッションを使うとかにしたほうがいいに一票。




PHP-users メーリングリストの案内