0

フラッシュ ゲーム サイトから無効な URL を削除しようとしています。これが私のコードです:

function valid($URL1) {
$headers = get_headers($URL1);
$headers = substr($headers[8],38,5);//leaves only flash word 
if ($headers=='flash')
return true; else   return false;
}
$URL1='http://www.ht83.com/medias/media-16/ht83com-cde-house-decoration.swf';
if(valid($URL1))
echo 'SWF are word>' ;

Content-Type が swf でなくても、そのコードは true を返します。

ちなみに私はすでに試しました

$headers=$headers['Content-Type'];

しかし、私に結果を与えません。私が試したとき

var_dump($headers);

有効な SWF URL http://www.ht83.com/medias/media-16/ht83com-spongebob-squarepants-gone-fishing.swfの場合はこれを返します

array(9) { [0]=> string(15) "HTTP/1.1 200 OK" [1]=> string(35) "Date: Sat, 01 Feb 2014 01:36:35 GMT" [2]=> string(144) "サーバー: Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8m DAV/2 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 mod_fcgid/2.3.5" [3]=> string(20) "Accept-Ranges: bytes" [4]=> string(22) "Content-Length: 342771" [5]=> string(39) "Cache-Control: max-age=62208000, public" [ 6]=> 文字列 (38) "有効期限: 月曜日、2014 年 3 月 3 日 01:36:35 GMT" [7]=> 文字列 (17) "接続: 閉じる" [8]=> 文字列 (43) "Content-Type : アプリケーション/x-shockwave-flash" }

そして、無効な SWF URL http://www.ht83.com/medias/media-16/ht83com-cde-house-decoration.swfの場合

array(12) { [0]=> string(15) "HTTP/1.1 200 OK" [1]=> string(35) "Date: Sat, 01 Feb 2014 01:40:06 GMT" [2]=> string(144) "サーバー: Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8m DAV/2 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 mod_fcgid/2.3.5" [3]=> string(24) "X-Powered-By: PHP/5.2.16" [4]=> string(38) "有効期限: 1981 年 11 月 19 日木曜日 08:52:00 GMT" [5]=> string(77) "Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0" [6]=> string(16) "Pragma: no-cache" [7]=> string(62) "Set-Cookie: PHPSESSID=359cf391842876b3cc79066dcc3a08f4; path=/" [8]=> string(21) "Vary: Accept-Encoding" [9]=> string(52) "Cache-Control: max-age =600、非公開、再検証が必要" [10]=>string(17) "Connection: close" [11]=> string(23) "Content-Type: text/html" }

したがって、URL の正しい Content-Type を取得する簡単な方法です。

数値のみで get_headers() を使用したようです。Sean Johnsonのこのコードは機能します

function valid($URL) {
$headers = get_headers($URL, 1);//
return stripos($headers['Content-Type'],"application/x-shockwave-flash")!==false;
}
4

2 に答える 2

1

get_headers ドキュメントの最初の例によると、キー値でヘッダーにアクセスできるようにする場合は、2 番目の引数を使用する必要があります。

これを試して:

function valid($URL) {
    $headers = get_headers($URL,1);
    return stripos($headers['Content-Type'],"flash")!==false;
}
于 2014-02-01T02:11:05.910 に答える
0

あなたのコードは、Content-Type ヘッダーが常にサーバーから返される 9 番目のヘッダーであると想定していますが、そうではありません。

ヘッダーをループして、正しいもの (つまり、で始まるものContent-Type:) だけを調べる必要があります。

于 2014-02-01T02:03:34.867 に答える