ホームページ  >  記事  >  バックエンド開発  >  move_uploaded_file の使用

move_uploaded_file の使用

WBOY
WBOYオリジナル
2016-07-29 09:00:393135ブラウズ

定義と使用法

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 )

まず、これら 2 行のコードの意味を説明します: ファイルを直接保存します。ファイル名はユーザーがアップロードしたファイル名でもあります

わかりました。ここでリスクがあります:

①ファイルを直接保存します。

これは、ユーザーが背景コードをアップロードして jpg などのサフィックスとして保存した場合、管理者がそれを誤って php にマッピングしてから背景にアクセスした場合、そのファイルはいかなる方法でも識別されないことを意味します。バックグラウンドですべてのデータベースを削除すると、Web サイト全体が直接 GG になることが想像できます。つまり、ファイルを直接保存するのは非常に危険です。

②ファイル名はユーザーファイル名と同じにしてください。

ユーザーが中国語のファイル名を使用すると、上記のコードはエラーを報告します。

ファイル名が英語+数字であれば問題ありませんが、中国語が含まれている場合は大きな問題となり、再エンコードする必要があります。

信頼できるストレージとは次のようにあるべきだと思います:

① ユーザーがアップロードしたファイルを識別するため。

ファイル認識、この部分には多くの機能がありますが、これも偽造が難しいMIMEタイプを使用するのが良いと思います。

②ファイル名を変更する。

ファイル名を「201634104421」のような時刻形式に変更するのが最善だと思います。ファイル名をデータベースと一致させることもできます。

上記は、内容の側面も含めて move_uploaded_file の使用法を紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:PHP---文字列次の記事:PHP---文字列