人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

phpでの質問です。

header("location〜")をPOSTで渡す方法を探しています。
携帯サイトなのでJavascriptは使えません。
shift-jisのサイトからutf-8のサイトへ渡します。


(1)307でリダイレクト
header('Location: '.$url, true, 307);
=>POSTの文字コードを変換できないのでダメでした。

(2)POSTで送信してからリダイレクト
http://questionbox.jp.msn.com/qa3554188.html?StatusCheck=ON
=>うまくいきません。やり方が悪いのかもしれません…。

送り元のサイトの文字コードをutf-8にしてしまえば解決するのですが、携帯サイトなのでshift-jisにするしかありません。
(最近ではほとんどの機種がutf-8対応になっていますが、社長の機種が対応していなくて…)

よろしくお願いします。

●質問者: shotets
●カテゴリ:ウェブ制作
✍キーワード:JavaScript JIS PHP URL UTF-8
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● tezcello
●15ポイント

(POST で)受け取ったデータを、エンコードを変換して、別ホストへ投げるのなら、

fsockopen(), fwrite() を使って

書き出せばよいうのでは?

(もちろんその前に、mb_convert_encording() で変換しておく)

POST で送るのなら、このサンプル

http://www.ecoop.net/memo/2005-12-29-1.html

と同じような手順で書き出せばよいのでは?

プロトコルの詳細は、HTTP プロトコル POST でググるといろいろ見つかると思います。

◎質問者からの返答

回答ありがとうございます。

質問の仕方が悪くてすみません。

POSTデータを送るだけではダメなんです。

クライアントが送り先に行かないと(リダイレクトしないと)ダメなんです。


2 ● hard
●70ポイント ベストアンサー

POST送信先のサイトが修正可能でマルチバイトに対応しているのであれば、

mb_convert_encoding()で$_POSTの値を変更するだけでしょうけど、

おそらくそれが出来ないからお困りなんですよね?


送信元フォームで文字コードを指定する方法は、以下のサイトが分かりやすいと思います。

http://wiki.mesolabo.com/?%E3%83%A1%E3%82%BD%E7%9F%A5%E6%81%B5%2...

◎質問者からの返答

> POST送信先のサイトが修正可能でマルチバイトに対応しているのであれば、

> mb_convert_encoding()で$_POSTの値を変更するだけでしょうけど、

> おそらくそれが出来ないからお困りなんですよね?

まさしくその通りです!

> 送信元フォームで文字コードを指定する方法は、以下のサイトが分かりやすいと思います。

すばらしい!

探していたのはまさにこのようなことです。

accept-charset="utf-8" というやり方は知っていましたが、IEでダメだったのであきらめていました。解決方法があったのですね!

PHPにとらわれすぎて問題の根本を見失っていたのかもしれません。

ありがとうございます。

しかし、この方法で携帯で試してみたのですが、

docomo => OK, AU => OK, softbank => NG

でした。残念。


◆追記です。

softbankだけNGの理由が分かりました。

softbankの携帯が文字コードを変換できる携帯だったので

試しに「自動」から「shift-jis」や「utf-8」に変更してみたところ

なんと送信先のページがshift-jisになっていました。

(shift-jisに切り替えたら送信データが文字化けして、ページは正常。

utf-8に切り替えたら送信データは正常、ページが文字化け。)

つまり、教えていただいた方法でちゃんとUTF-8で送られていたということです。

ただいま、相手先にshift-jisになる場合の判別方法の回答待ちです。

それに合わせて送る側も対応すれば解決します。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ