[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 メーリングリストの案内