定義と使用法
move_uploaded_file() 関数は、アップロードされたファイルを新しい場所に移動します。
成功した場合は true を返し、それ以外の場合は false を返します。
構文
move_uploaded_file(file,newloc)
パラメータ | 説明 |
---|---|
ファイル | 必須。移動するファイルを指定します。 |
newloc | 必須。ファイルの新しい場所を指定します。 |
説明
この関数は、fileで指定されたファイルが正当なアップロード ファイル (つまり、PHP の HTTP POST アップロード メカニズムを通じてアップロードされたファイル) であることをチェックし、保証します。ファイルが正当な場合、そのファイルは newloc で指定されたファイルに移動されます。
fileが合法的にアップロードされたファイルではない場合、操作は行われず、move_uploaded_file() は false を返します。
fileが正当にアップロードされたファイルであるにもかかわらず、何らかの理由で移動できない場合、アクションは発生せず、move_uploaded_file() は false を返し、警告が発行されます。
この種のチェックは、アップロードされたファイルによってそのコンテンツがこのシステムのユーザーまたは他のユーザーに表示される可能性がある場合に特に重要です。
ヒントとメモ
注: この機能は、HTTP POST 経由でアップロードされたファイルにのみ使用されます。
注意: 対象ファイルが既に存在する場合は上書きされます。
w3c からの紹介として、私が遭遇した問題について話しましょう。
一般的に、保存ファイルは次のように書きます:
$fileName = $_SERVER['DOCUMENT_ROOT'].'/Basic/uploads/'.$_FILES['file']['name']; move_uploaded_file($_FILES['file']['tmp_name'],$fileName )
わかりました。ここでリスクがあります:
①ファイルを直接保存します。
これは、ユーザーが背景コードをアップロードして jpg などのサフィックスとして保存した場合、管理者がそれを誤って php にマッピングしてから背景にアクセスした場合、そのファイルはいかなる方法でも識別されないことを意味します。バックグラウンドですべてのデータベースを削除すると、Web サイト全体が直接 GG になることが想像できます。つまり、ファイルを直接保存するのは非常に危険です。
②ファイル名はユーザーファイル名と同じにしてください。
ユーザーが中国語のファイル名を使用すると、上記のコードはエラーを報告します。
ファイル名が英語+数字であれば問題ありませんが、中国語が含まれている場合は大きな問題となり、再エンコードする必要があります。
信頼できるストレージとは次のようにあるべきだと思います:
① ユーザーがアップロードしたファイルを識別するため。
ファイル認識、この部分には多くの機能がありますが、これも偽造が難しいMIMEタイプを使用するのが良いと思います。
②ファイル名を変更する。
ファイル名を「201634104421」のような時刻形式に変更するのが最善だと思います。ファイル名をデータベースと一致させることもできます。
上記は、内容の側面も含めて move_uploaded_file の使用法を紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。