- 締切済み
【携帯】位置情報コンテンツ+セッション
現在、会員制の位置情報コンテンツを作成しています。 ログインをして、セッションの維持のため、セッションIDをURLに付加しているのですが、 現在地を更新のために、 device:location?url=http://example.com/ にジャンプさせようと思います。 ですが、 device:location?url=http://example.com/<?=SID?> のようにセッションIDを渡すと、リンク先のページで、 http://example.com/?PHPSESSID=xxxxxxxxxx?datum=xxxxx&unit=xxxxx&lat=xxxxx&lon=xxxxx のようなURLになってしまい、エラーが出ます。 (エラー内容は、 Warning: session_start():The session id containsillegal characters, valid characters are a-z, A-Z, 0-9 and '-,' in line 38 Warning: session_start():Cannot send session cachelimiter - headers already sent (outputstarted at line 38) in line 38 のように表示されます。) どのようにしてセッションを保持し、位置情報を取得することができるのでしょうか?
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- racci
- ベストアンサー率64% (9/14)
AUの位置情報取得の機能を使ったことは無いのですが、ご質問の内容から、以下のようにすればよいかなと思いました。 (案1) url引数の最後に「&」を付けたらどうでしょう。 device:location?url=http://example.com/?<?=SID?>& もしくは、 device:location?url=http%3A%2F%2Fexample.com%2F%3F<?= urlencode(SID) ?>%26 のような感じで。 位置確認後は、以下のURLに戻ってくると思います。 http://example.com/?PHPSESSID=xxxxx&?datum=xx&unit=xx&lat=xx&lon=xx datumの値には、$_GET['datum'] ではなく $_GET['?datum'] としてアクセスすることになるかもしれません。 (案2) クエリパラメータではなくURL内にセッションIDを埋め込む方法。 device:location?url=http://example.com/hoge.php/<?= session_id() ?>/ のようにする。 以下のようなURLに戻ってくると思います。 http://example.com/hoge.php/xxxxxxxxx/?datum=xx&unit=xx&lat=xx&lon=xx hoge.phpでは、PHP_SELFからセッションIDを抜いて、session_id関数に渡します。 $path = $_SERVER['PHP_SELF']; // => /hoge.php/xxxxxxxxx/ preg_match("|/([a-zA-Z0-9-]+)/$|", $path, $matches); $sessid = $matches[1]; // => xxxxxxxxx session_id($sessid); session_start(); ........ あくまで思い付きです。もし参考になれば。
お礼
現在、http://xxxx/ID/PASS/?~ のようにしていましたが、不安ですので案1のやり方でしてみようと思います。 有難うございました。