PEAK XOOPS - FCHが他のファイルをHTMLドキュメントだと勘違いすることがある in englishin japanese

FCHが他のファイルをHTMLドキュメントだと勘違いすることがある

  • You cannot open a new topic into this forum
  • Guests cannot post into this forum
Previous post - Next post | Parent - Children.1 | Posted on 2006/6/28 13:42
suin  二等兵   Posts: 6
GIJOEさん、またおじゃまします。

FCHは下の処理でHTMLドキュメントかどうか判断していますよね。
	// caches are created only for HTML documents
	if( ! stristr( substr( $s , 0 , 100 ) , 'html' ) ) {
		if( FASTESTCACHE_DEBUG ) error_log( "not html\n" , 3 , XOOPS_TRUST_PATH.'/fullcache/result' ) ;
		return $s ;
	}
これは、ファイルの始まりから100バイト以内に文字列"html"があればHTMLと判断し、キャッシュを作り、ヘッダでContent-Type: text/htmlを送るという流れになるかと思います。

ところが、zipファイルをバイナリで開いたとき、偶然htmlという文字列がのはじめの方に入るファイルがあり、そのキャッシュが作られてしまうことがありました。キャッシュが作られると、ヘッダにContent-Type: text/htmlがつけられるので、正常にダウンロードできなくなるようです。

"html"という文字列にあわせて、"<!DOCTYPE "が有るかどうかもチェックしたらどうでしょうか。HTMLドキュメントなら必ず、"<!DOCTYPE "タグが有るとは言い切れませんが、XOOPSなら大丈夫だと思います。
Votes:2 Average:10.00
Previous post - Next post | Parent - Children.1 | Posted on 2006/6/29 18:05
GIJOE  先任軍曹   Posts: 4110
suinさん、こんにちは。
ご指摘ありがとうございます。
確かにzipだと、ファイル名は無圧縮で格納されているので、htmlが含まれる可能性は高いですね。

逆に、'<!DOCTYPE' が含まれる可能性は圧倒的に低いので、こっちを採用させていただきます。

本当は、headers_list() の結果を調べて、どのような Content-Type: が送られていたかを記憶するのが一番なのですが、PHP4に実装してくれる可能性は0に近いので…orz


それにしても、XOOPS経由でファイルが転送される可能性を考えていませんでした。これでbulletin 2.0がダウンロードできなかったのだとしたら、申し訳ありません。
Votes:1 Average:0.00
Previous post - Next post | Parent - No child | Posted on 2006/6/29 19:04
suin  二等兵   Posts: 6
GIJOEさん、こんにちは。

対応ありがとうございます。

僕もFCHを適用する以前に、htmlで判断しているのを知っていたのですが、まさかbulletin2.0がぴったり当てはまってしまうとは夢にも思いませんでした
Votes:1 Average:10.00

  Advanced search


Login
Username or e-mail:

Password:

Remember Me

Lost Password?

Register now!