Kung-Tuneからの送信データ、曲名などに「&」が含まれるとPHPでの処理に失敗していた。
POSTで送信されてくるので、$_POST変数で受けていたのだが、生で「&」が含まれるから受信データの解析時にそこで分割されてしまうのだ。
Kung-Tuneでエンコーディングをかけるのは可能なのだが、すると通常の区切りとしての「&」までエンコードされてしまうので、結局$_POSTでは受け取れない。
で、生データを使用することにして、自前で解析ルーチンをコーティングすることにした。解析とはいっても一般的に一般論で記述するレベルでの実装は必要なく、あくまで今回の送信フォーマットを解析できれば充分だ。
試行錯誤を重ねて動くものは作成できた。ルーチン部分をテストプログラムに記述して、ソース内にベタ書きしたパラメータ(実際に受信する形のもの)を解析すると正しく解析されている。「&」が含まれても問題はない。
ただ、DBに入る値が途中で切れてしまっている。原因は不明。調査中なのだが、DB登録は実際の動作中でないとテストプログラムで動かしても意味がない。環境の問題かもしれないからだ。
この問題が解決すれば残りはKung-Tuneからの送信タイミングの調整と途中で再生を止めたときの処理を実装すれば、あとはビューを作ればいいことになる。iPodのデータはペンディングのままだが。なかなか面白い。
ちなみに、生のPOSTデータは
file_get_contents(“php://input”)
で取得している。
最初は$_SERVER[“QUERY_STRING”]を使おうと思っていたが、これはGETのときしか使えない。URLの後ろにつくパラメータの取得用だからだ。いろいろと調べながら、試しながらの実装。しかし、多分仕事には役に立たない。
コメント