PHPファイルアップロードのソースコード解析(RFC1867)_PHPチュートリアル
PHP ファイルアップロードのソースコード分析 (RFC1867) 知りたい人は参考にしてください
HTTP ベースのアップロードは、FTP よりも比較的使いやすく、安全です。この記事では、PUT、WEBDAV、RFC1867 などのアップロード方法を分析します。 PHP で RFC1867 に基づいたファイル アップロードを実装するための
RFC1867
RCF1867 は、HTML 標準プロトコルのフォームベースのファイル アップロードです。
1 type 属性にファイル オプションを追加しました。入力要素の。
2 input タグには、アップロードできるファイル タイプまたはファイル形式のリストを指定できる accept 属性を含めることができます。
さらに、この標準では、新しい MIME タイプ multipart/form-data も定義されており、enctype="multipart/form-data" または を含むファイルを処理する場合、フォームにマークを付けるときに取るべき動作。
たとえば、HTML でユーザーが 1 つ以上のファイルをアップロードできるようにしたい場合は、次のように記述できます:
コードは次のとおりです | コードをコピーします |
このフォームは誰もがよく知っているはずですが、PHP では独自の定義があります。デフォルトのフォーム要素 MAX_FILE_SIZE。ユーザーは、この非表示のフォーム要素を使用して、PHP がアップロードするファイルの最大サイズのみを許可することを提案できます。たとえば、上記の例では、ユーザーがアップロードするファイルが 5000 (5k) を超えないようにすることができます。 ) バイトの場合、次のように記述できます:
コードは次のとおりです | コードをコピー |
ファイルを選択: ファイルの説明: |
この MAX_FILE_SIZE がどれほど信頼できないかは言うまでもありません (したがって、ブラウザベースの制御は信頼できません)。純粋に実装の観点から、この MAX_FILE_SIZE がどのように機能するかをゆっくり紹介します。 out ファイルの説明 (「Laruence の個人紹介」)、アップロードをクリックした後はどうなりますか?
フォーム送信
ユーザーが送信を確認した後、ブラウザは、action 属性で指定されたページに次のような形式のデータ パケットを送信します。フォーム内 (この場合は、upload.php):
コードをコピー | |||||||||||||||||||||||||||||||||
POST /upload.php HTTP/1.0rn ...
|
コードをコピー | |
if ((cd = php_mime_get_hdr_value(header, "Content-Disposition "))) { char *pair=NULL; ++cd; { ++cd; key = php_ap_getword(&pair, '=' ); F if (! Strcasecmp (key, "name") { EFREE (Param); } else if ( !strcasecmp(key, "ファイル名")) {
|
unsigned int value_len;
char *value = multipart_buffer_read_body(mbuff, &value_len TSRMLS_CC);} | |||||||||||||||||||||||||
「はい」の場合、その値に従ってファイル サイズを超えているかどうかを確認します
上記のコードを通して、判定が 2 つの部分に分かれていることもわかります。 、最初の部分は、PHP のデフォルトのアップロード制限を確認することです。2 番目の部分は、ユーザー定義の MAX_FILE_SIZE を確認することです。したがって、フォームで定義されている MAX_FILE_SIZE は、PHP で設定されている最大アップロード ファイル サイズを超えることはできません。 名前とファイル名を判断することで、ファイルアップロードの場合、PHPの設定に従ってファイルアップロードディレクトリにランダムな名前の一時ファイルを作成します:
ファイル ハンドルと一時的なランダム ファイル名を返します。 その後、ファイル名が正当である、名前が正当であるなどの検証。 これらの検証に合格した場合は、内容を読み取り、この一時ファイルに書き込みます。 ...
ループ読み込みが完了したら、一時ファイルハンドルを閉じます。 レコード一時変数名:
このとき、名前を付けてアップロードするとFILE変数が生成されます。設定します:
名前なしのアップロードの場合は、tmp_name を使用して設定します:
最後にupload.phpの処理をユーザーに渡します。 この時点でupload.phpでは、ユーザーはmove_uploaded_fileで生成したばかりのファイルを操作することができます
|

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、
