前回の記事:
1. ファイルの種類を検出し、ユーザーが保存したファイルの名前で保存します
if(isset($_FILES['img' ]))
{
$file = save_file($_FILES['img']);
if($file===false) exit('保存失敗!');
echo "保存成功!",$file ;
}
function check_file( $img)
{
///ファイルを読み込みます
if($img['error']>0) return false;
$tmpfile = $img['tmp_name'];
$ filename = $img[' name'];
///ファイル拡張子を読み取ります
$len=strrpos($filename,".");
if($len===false) return false;
/ /拡張子を取得します
$ext = strto lower(substr($filename,$len+1));
if(!in_array($ext,array('jpg','jpeg','png'))) return false;
return true;
}
function save_file($img)
{
if(!check_file($img)) return false;
//フォーマット検出OK、データ移動の準備
$filename = $img['name' ];
$newfile = "upload/" .$filename;
if(!move_uploaded_file($img["tmp_name"],$newfile)) return false;
return $newfile;
}
?>
上記コード、input型に関しては私も判定して問題ないことが分かりました。しかし、問題はまさに、取得したユーザー名変数の検出に現れます。受信したユーザー名を直接取得し、ファイルとして保存します。 友人の中には、「これらのファイル名はすべて私のコンピュータに存在しており、ファイル名の形式はオペレーティング システムのファイル名定義によって制限されている」と言う人もいます。 ただし、$_FILES で取得される変数は http リクエストから直接取得されることに注意してください。他の get 変数や post 変数を取得する場合と同じです。 したがって、下心のある人がブラウザを自分でシミュレートし、特別なファイル名をサーバーに送信することがよくあります。その後、ファイルを保存するときに、通常どおり独自の形式で保存できます。
以前は、」
http://www.bkjia.com/PHPjc/327914.html
www.bkjia.com
true