My Photo

« メールヘッダ・インジェクション脆弱性 | Main | PHPメモ036:グローバル変数のクリア »

February 01, 2014

WordPressでsession_start()など初期化処理をしたい

WordPressやっつけ対応の第2弾。

とある共通処理があり、内部でsession_start()を呼んでいる。それはWordPressを使っている画面と使っていない画面の両方から呼ばれる。
しかし、WordPressの方からだけWarningが出力される。
WordPressの方ではその共通処理を呼んだ時点で既に出力を始めているようで、そのために

[nn-Jan-2014 nn:nn:nn] PHP Warning:  session_start(): Cannot send session cache limiter - headers already sent (output started at /****/xxx.php:99) in /***/xxx.inc on line nnnn

のようなWarningが出る。「もうHTTPヘッダ出力してるから」ということらしい。

解決策は2つ。
1つは wp-config.php に session_start() を書く方法。
これはWordPress全体に対して有効。

もう1つは functions.php に書く方法。このファイルは

<WordPressのフォルダ?>/wp-content/themes/<テーマ>/functions.php

にある。
テーマ毎に設定できるようだ。
#WordPressはよくわかっていない。 具体的には functions.php に以下のコードを書く。

function onetoone_session_start() {
	session_name('hoge_sid');
	session_start();
}
add_action('init', 'onetoone_session_start');

上記の2つのやり方は session_start() に限らず、出力を開始する前に何か処理をしたい場合に使える。

関連記事:
WordPressから呼ばれているかどうかを判定する

参考サイト:
WordPressにおけるPHPセッション管理 | Yama's Memorandum
PHP:WordPressのプラグインでsession_start() | 自転車で通勤しましょ♪ブログ

« メールヘッダ・インジェクション脆弱性 | Main | PHPメモ036:グローバル変数のクリア »

PHP」カテゴリの記事

プログラミング、技術情報」カテゴリの記事

Comments

Post a comment

(Not displayed with comment.)

TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/26461/59052045

Listed below are links to weblogs that reference WordPressでsession_start()など初期化処理をしたい:

« メールヘッダ・インジェクション脆弱性 | Main | PHPメモ036:グローバル変数のクリア »

September 2017
Sun Mon Tue Wed Thu Fri Sat
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
無料ブログはココログ

日本blog村

  • にほんブログ村 IT技術ブログへ
  • にほんブログ村 アニメブログへ
  • にほんブログ村 サッカーブログ アルビレックス新潟へ

好きな音楽家

メモ

XI-Prof