is_uploaded_file
(PHP 3 >= 3.0.17, PHP 4 >= 4.0.3, PHP 5)
is_uploaded_file -- HTTP POSTによりアップロードされたファイルかどうかを調べる
説明
bool
is_uploaded_file ( string filename )
filenameという名前のファイルがHTTP POSTにより
アップロードされた場合にTRUEを返します。この関数は、悪意のあるユー
ザーがスクリプトをだまして動作しなくなるようなファイル、例えば、
/etc/passwd を指定することを防止したい場合に
有用です。
この種の確認は、アップロードされたファイルに関して何でもできる場
合には、その内容をユーザ、または同じシステム上の他のユーザにさえ
暴かれる可能性があるため、特に重要です。
適切に動作させるため、関数 is_uploaded_file()
は $_FILES['userfile']['tmp_name'] のような引数を必要とします。
アップロードされたファイルのクライアントマシン上での名前
$_FILES['userfile']['name'] では動作しません。
例 1. is_uploaded_file() の例
<?php
if (is_uploaded_file($_FILES['userfile']['tmp_name'])) { echo "File ". $_FILES['userfile']['name'] ." uploaded successfully.\n"; echo "Displaying contents\n"; readfile($_FILES['userfile']['tmp_name']); } else { echo "Possible file upload attack: "; echo "filename '". $_FILES['userfile']['tmp_name'] . "'."; }
?>
|
|
is_uploaded_file()は、
PHP 3.0.16 より後のバージョンの PHP 3 および 4.0.2 以
降のバージョンの PHP 4 でのみ利用可能です。
古いバージョンを使っていてつまづいている場合は、
自分自身を守るために後述の関数を使用することができます。
注意:
以下のサンプルは PHP 4.0.2 以降の PHP 4 では動きません。
これはこのバージョン以降でPHPの内部処理が変更されたためです。
例 2. PHP 4 < 4.0.3 用の is_uploaded_file() の例
<?php /* アップロードされたファイルのテスト */ function is_uploaded_file_4_0_2($filename) { if (!$tmp_file = get_cfg_var('upload_tmp_dir')) { $tmp_file = dirname(tempnam('', '')); } $tmp_file .= '/' . basename($filename); /* ユーザは php.ini で最後にスラッシュを付けているかも知れない... */ return (ereg_replace('/+', '/', $tmp_file) == $filename); }
/* 以下はこの関数の使用方法。これら古いバージョンには * move_uploaded_file() もない。 */ if (is_uploaded_file_4_0_2($HTTP_POST_FILES['userfile'])) { copy($HTTP_POST_FILES['userfile'], "/place/to/put/uploaded/file"); } else { echo "Possible file upload attack: filename '$HTTP_POST_FILES[userfile]'."; } ?>
|
|
簡単な使用例に関しては、move_uploaded_file()お
よびファイルアップロードの処
理の節も参照ください。
東京デリヘル 池袋デリヘル 新宿デリヘル 渋谷デリヘル 品川デリヘル
鶯谷デリヘル 大塚デリヘル 立川デリヘル 町田デリヘル 横浜デリヘル 埼玉デリヘル
千葉デリヘル 大阪デリヘル 神戸デリヘル 京都デリヘル 名古屋デリヘル デリヘル
アダルトレンタルサーバー アダルトレンタルサーバー 表札 断熱塗料 UGUISU
大阪 老人ホーム 京都 老人ホーム 兵庫 老人ホーム 和歌山 老人ホーム 滋賀 老人ホーム
奈良 老人ホーム 東京 老人ホーム 神奈川 老人ホーム 千葉 老人ホーム 埼玉 老人ホーム 老人ホーム