質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

セッション

Sessionはクライアントがサーバに送ったすべてのリクエストのことを指します。

Q&A

1回答

2494閲覧

PHP クラスを使ってsession情報を管理できますか?

K_T_T_K

総合スコア231

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

セッション

Sessionはクライアントがサーバに送ったすべてのリクエストのことを指します。

0グッド

0クリップ

投稿2014/09/19 09:07

PHP初心者です。

現在iOSとサーバ側の処理をPHPを使ってSNSのようなアプリ開発をしています。
PHPはオブジェクト指向ではなく、手続き型で書いています。
(PHPを始めたばかりでまだオブジェクト指向で書き換えられない程度の者です。)

ログイン/新規登録->タイムライン一覧画面->投稿画面
のように遷移していくものをイメージしています。

ログイン/新規登録した時にそのユーザーのuser_idをセッションで保持しそのユーザーIDを使い回して
いきたいのですが、タイムライン一覧画面ではJSONを吐き出しておりそのJSONをObjetive-Cに渡すようになっています。
ログイン/新規登録APIからタイムライン画面(タイムラインAPI)にuser_idをセッション変数に代入し次に投稿画面に渡したいのですがここでつまづいています。
つまづいている理由として、
現在の渡し方はheader('Location: URL')を使って遷移したAPIにsessionで渡しているのですがタイムラインAPIでJSONを吐き出しておりAPIから投稿画面APIヘuser_idを渡す際に以下のエラーがでてしまいます。
エラーは

lang

1Warning: Cannot modify header information - headers already sent by

というのがでてしまいます。
JSONを吐き出しす前には

lang

1header("Content-Type: text/javascript; charset=utf-8");

を使っています。
そのためエラーがでてしまいます。

JSONを吐き出す前にheaderでリダイレクトするとObjetive-C側でJSONの結果を取得できずエラーになってしまいます。

という所でつまづいており、うまくタイムラインAPIから投稿画面APIへと渡せません、

そこでクラス間のやりとりでsessionの管理ができないものかと思いました。
色々調べたところ、
serialize/unserializeを使うみたいな所へたどり着きました。
それかクラスでsession情報を管理して渡すのか。。

長々とわかりにくく申し訳ないのですがこういった場合どのようにしてセッションを渡していくのがベターなのでしょうか?

どなたか親切な方いましたら回答宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

header()は、内容を出力したあとには使うことはできません。
body部が始まってしまったのにいまさらheader部は出せないという事です。

質問としては、内容(json)を出力した後でページ遷移してもらう術はないかという事になるのではないでしょうか。

Session経由でuser_idを渡せないかとはまた別の話の様な気がします。

iOS側がどのような作りなのかわかりませんが、
一般にブラウザとphpなどで作られた webアプリケーションの間でいわゆるセッション変数というものをサーバー側で利用している場合、ブラウザとWebアプリケーションの間ではSession IDのやり取りが行われています。これは通常クッキーやURLパラメータとして渡されて、phpが自動で取得してセッションの内容を復元したり作成したりします。

セッションを使いたいのであればセッションIDがやり取りできるようにしてあげなければいけません。

投稿2014/09/19 16:39

flied_onion

総合スコア2604

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

K_T_T_K

2014/09/20 08:22

セッションIDがやりとりできるようにできました。 回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問