[PHP-users 21797]Re: session_startをコールしては駄目なのでしょうか

Kuma satoru_kumagai @ mjs.co.jp
2004年 5月 22日 (土) 13:39:56 JST


安部様,ありがとうございます.

PHP-users 18611,参考になりました.

今現在のソースにおいて,動作するクライアント,そうでないクライアントがある状態ですので,クライアント側のブラウザのバージョン,設定等
で,何か違いがあるのかを調査している段階です.
(今までは,どのクライアントも動作していたわけなので,サーバー側も気になりますが,とりあえずクライアント側に焦点を絞ってみます)

今現在のソース
<?php
session_start();
$v_time = date("U") ;
$ex = $v_time - 180 ;
chk_tout() ;         //タイムアウト処理
chk_ref() ;           //POSTチェック
function chk_tout(){
if($_SESSION['time'] < $ex){
header("Location: http://hoge.co.jp/hogehoge/timeout.php");
exit ;
}else{
  $_SESSION['time'] = $v_time ;
}
}
function chk_ref(){
if(empty($_POST['flg'])){
header("Location: http://hoge.co.jp/hogehoge/error.php");
exit ;
}
}
header("Content-type: application/vnd.ms-excel");
header("Content-Transfer-Encoding: base64");
header("Content-Disposition: inline;filename={$_SESSION['fname']}");

#Excelファイルのオープン
$fd = fopen("d:/temp/{$_SESSION['file_name']}", "rb");

#Excelの標準出力
fpassthru($fd);

#Excelファイルの削除
unlink("d:/temp/{$_SESSION['file_name']}");
?>
動作しないクライアントでは,ポストチェックのchk_ref()に処理が入ります.
しかし不思議なのは,exitと記述しているにもかかわらず,ブラウザにはExcelのシートが表示され,そのうえでerror.phpのページの内容が表示さ
れます.
exit以降の処理には入らないと思っていたのですが???



PHP-users メーリングリストの案内