[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 メーリングリストの案内