• ベストアンサー

GETの値について

phpとpostgresqlでデータのやり取りをしていてDBにinsertされたデータをcsv形式でブラウザにてダウンロードさせる仕組みを作っております。 download.phpにGETで値を渡してますが 1.download.php?date=2005_03 2.download.php?date=2005/03 1.ですと普通にファイル形式がcsv形式としてダウンロードされますが、2.ですとファイルの種類が空白で最終的には.txtとしてダウンロードされます。 GETの値で"/"(スラッシュ)を使った場合、正常にcsvとして認識されないものでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

GET文字列をどう解釈するかはブラウザの実装に任されている部分があります。/はURLの中でディレクトリの意味があるので、特定のブラウザがこれをうまく解釈できないとしても不思議はありません。 download.php?date=2005%2F03 としてみたらどうなりますか?これで正常に表示されれば原因はソレです。%2Fは/をURLエンコードした文字列です。

その他の回答 (2)

  • g_dori
  • ベストアンサー率47% (330/699)
回答No.2

日付とファイル名を関連付けているんじゃないでしょうか? '/'はファイルシステムの制限で使えないと思います。 GETのパラメータとして'/'を送る分には、単に文字列のひとつとして扱われるだけなので特に問題なかったような。

shilvia__s15
質問者

お礼

返答有難う御座います。 IEはtxtとしてダウンロードされますがfirefoxとoperaではきちんとcsvとしてダウンロードされました。 恐らくIEの何らかのパッチが影響しているのでは?と考えております。

回答No.1

GETで数字以外の文字列を渡す時はURL_ENCODEを掛けてあげた方が無難です。/はURLの中で意味がある文字なので、GET文字列の中では使えません。

shilvia__s15
質問者

お礼

返答有難う御座います。 IEはtxtとしてダウンロードされますがfirefoxとoperaではきちんとcsvとしてダウンロードされました。 恐らくIEの何らかのパッチが影響しているのでは?と考えております。

関連するQ&A