指定したHTTPヘッダーが送信済みあるいは送信予定に含まれているか

PHPのheader関数は、第2引数にfalseを指定しない限り、前に指定された類似のヘッダを置換します。
このためHTTPヘッダーが未出力の場合は、新たに上書きすることが可能です。

HTTPヘッダーが既に送信済みかどうかはheaders_sent()で得ることができます。

<?php
/**
 * 指定したHTTPヘッダーが送信済みあるいは送信予定に含まれているか
 * @create  2009/06/10
 * @author  pentan
 * @url     http://pentan.info/
 *
 * @param string  $name HTTPヘッダーの属性名
 * @return boolean 結果
 *
 * Copyright (c) 2009 pentan.info All Rights Reserved.
 * 著作権表示部分の変更削除は禁止です
 */
function hasHeaderSent( $name , $already = false){

// 既に送信済みか送信予定のHTTPヘッダーを取得
  $send_headers=headers_list();

// 指定したHTTPヘッダーが含まれているか
  foreach($send_headers as $header){
    if(preg_match("/^".preg_quote($name)."/i",$header)){
      return true;
    }
  }

  return false;
}
?>

関連記事

スポンサーリンク

iアプリを作るための開発環境設定

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る