When you include a php file in your current script it's included, not processed separately, thus it's still within the same page and the current page hasn't finished processing.
Thus, session is not set yet. This is the expected behaviour.
If you need to load a page after setting session data, you should set session data and then send a redirection or refresh header (remember not to send anything, not even whitespace before sending headers).
Always consider session data to be updated after the next page load (as in http request completed).
セッション処理
- 導入
- インストール/設定
- 定義済み定数
- 例
- セッションとセキュリティ
- セッション関数
- session_cache_expire — 現在のキャッシュの有効期限を返す
- session_cache_limiter — 現在のキャッシュリミッタを取得または設定する
- session_commit — session_write_close のエイリアス
- session_decode — 文字列からセッションデータをデコードする
- session_destroy — セッションに登録されたデータを全て破棄する
- session_encode — 現在のセッションデータを文字列としてエンコードする
- session_get_cookie_params — セッションクッキーのパラメータを得る
- session_id — カレントのセッション ID を取得または設定する
- session_is_registered — 変数がセッションに登録されているかどうかを調べる
- session_module_name — 現在のセッションモジュールを取得または設定する
- session_name — 現在のセッション名を取得または設定する
- session_regenerate_id — 現在のセッションIDを新しく生成したものと置き換える
- session_register — 現在のセッションに1つ以上の変数を登録する
- session_save_path — 現在のセッションデータ保存パスを取得または設定する
- session_set_cookie_params — セッションクッキーパラメータを設定する
- session_set_save_handler — ユーザ定義のセッション保存関数を設定する
- session_start — セッションデータを初期化する
- session_unregister — 現在のセッションから変数の登録を削除する
- session_unset — 全てのセッション変数を開放する
- session_write_close — セッションデータを書き込んでセッションを終了する
Sessions
Madster
29-Jul-2008 04:45
29-Jul-2008 04:45
mike at basementideas dot com
08-Jul-2008 09:05
08-Jul-2008 09:05
The note about an included file not being able to access the sessions is not true. You just have to do a session_start(); in the included file.
This is what drove me here today, because I was noticing the same thing. But I tried the above on a whim and it works fine. You wouldn't think you'd need to start a session twice, but I guess the scripts are looked on as separate in that regard.
Mike
pushedx
02-Jul-2008 07:01
02-Jul-2008 07:01
Here is something to watch out for when working with sessions.
Let's say you have two pages, Page A and Template Z. If Page A sets session data and includes Template Z, the session data is not properly registered for the execution of Template Z due to how session data is written *after* a script has executed [1].
As a result, your second page will not have the right session data, so you are a bit in a pickle. I'm sure there are other work arounds, perhaps with cookies or flat files, but you cannot use session data in that fashion.
The reason I have this setup is because I will have a number of Page A-Z's that will contain page specific content and one Template Z page that renders each page's specific content in the site layout. This way, the site content changing is independent of the style the site uses and the site style can change without modifying the actual content. It's a dynamically configurable site template design.
[1] See the "session_write_close" documentation page.