まず、ファイルのアップロードに関する PHP マニュアルを参照することをお勧めします: http://www.php.net/manual/en/features.file-upload.post-method.php
そのようなコードは、システム内のセキュリティ ホールを開く可能性があるためです。一般的に言えば、ウイルス スキャン、画像のバイナリ署名、サイズ変更による画像の検証などのチェックを行う前に、ユーザー ファイルを直接実行することはお勧めしません。パフォーマンスの観点から、データベースにファイルを保存することはお勧めしません。さらに、ディレクトリにアップロードすることを選択した場合、その権限を適切に設定する必要があります。
PHPマニュアルからあなたのケースに合わせて修正されたサンプルファイルアップロードコードをここにコピーします:
HTML 部分:
<!-- The data encoding type, enctype, MUST be specified as below -->
<form enctype="multipart/form-data" action="YOUR_Upload_FILE.php" method="POST">
<!-- Name of input element determines name in $_FILES array -->
<input name="img" type="file" />
<input type="submit" value="Send File" />
</form>
PHP 部分:
<?php
$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['img']['name']);
//At this point you may like to check:
/*
1. Upload Errors in $_FILES
2. Do virus check.
3. Do binary check for the images type
4. Do size check for the image
5. Do actual image resize to confirm it is valid image.
*/
//After everything is safe, you move the temporary file to your permanent store.
echo '<pre>';
if (move_uploaded_file($_FILES['img']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded.\n";
} else {
echo "Possible file upload attack!\n";
}
echo 'Here is some more debugging info:';
print_r($_FILES);
print "</pre>";
?>