PHP マニュアル
前のページ |  | 次のページ

# 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()は、 PHP 3.0.16 より後のバージョンの PHP 3 および 4.0.2 以 降のバージョンの PHP 4 でのみ利用可能です。 古いバージョンを使っていてつまづいている場合は、 自分自身を守るために後述の関数を使用することができます。

> 注意: 以下のサンプルはPHP4.0.2以降のPHP4では動きません これはこのバージョン以降でPHPの内部処理が変更されたためです。

`<?php
/* Userland test for uploaded file. */
function is_uploaded_file($filename) {
if (!$tmp_file = get_cfg_var('upload_tmp_dir')) {
$tmp_file = dirname(tempnam('', ''));
}
$tmp_file .= '/' . basename($filename);
/* User might have trailing slash in php.ini... */
return (ereg_replace('/+', '/', $tmp_file) == $filename);
}
/* This is how to use it, since you also don't have
* move_uploaded_file() in these older versions: */
if (is_uploaded_file($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()お よびファイルアップロードの処 理の節も参照下さい。

前のページ | ホーム | 次のページ
is_readable | 上に戻る | is_writable