質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

519閲覧

$_FILESの中のキーについて

freemac

総合スコア29

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/02/22 23:49

$_FILESの中での配列の扱い方

phpの学習中に、inputタグからファイルをphpに投げる、という動作をする教材でわからないことがあります。以下のコードでなぜmove_uploaded_fileのキーである[tmp_name]の直前に['image']がくる理由がわかりません。また、$_FILES['image']['name']はこの場合どのような出力を意味するのでしょうか。

該当のソースコード

PHP

1$image = date('YmdHis') . $_FILES['image']['name']; 2 move_uploaded_file($_FILES['image']['tmp_name'],"../member_picture/" . $image); 3 4<input type="file" name="image" size="35" value="test" /> 5

試したこと

phpの公式リファレンスにも目を通しましたが、やはり['image']というキーはなく、任意の変数だとしても具体的な文字列である"image"を抽出したいなら$_FILES['name']で事足りると思います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

HTMLに<input type="file">を複数設置した場合のことを考えてみましょう。

html

1<input type="file" name="foo"> 2<input type="file" name="bar">

この場合、2つのファイルはそれぞれ$_FILES['foo']$_FILES['bar']に来ます。これと形を合わせて、ファイルが1つのときでも$_FILES[フォームで設定するname]からアクセスする必要があります。

投稿2020/02/23 00:41

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

type=fileは任意数設置できるので、「どの要素の」が必須です。
それにあくまでキーなので文字列ではありません。オブジェクトです。

投稿2020/02/22 23:53

m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

freemac

2020/02/23 00:07 編集

返信ありがとうございます!どの要素かを特定する、とのことですが、 $_FILES['name']['tmp_name']では特定できないのでしょうか。。
maisumakun

2020/02/23 00:42

> $_FILES['name']['tmp_name']では特定できないのでしょうか ファイルにはname以外にもキーがあります。「1ファイル」単位でまとめて扱えるようにするために、フォームで送られた名前の方を先に持ってくる構造となっています。
freemac

2020/02/23 00:58

$_FILES→特定するためにformタグのnameの値を参照→そこから様々なキーにアクセスという 構造なのですね。二つ以上のデータが送られてくることを想定して考えることに今後気をつけたいと思います!
m.ts10806

2020/02/23 02:21

$_FILES['name']['tmp_name']では特定できないのでしょうか。。 これだと「name」とname属性の属性値に設定されたfileを指定することになるので、特定しているの言えば特定しています。
m.ts10806

2020/02/23 02:23

formタグのnameの値を参照→そこから様々なキーにアクセスという いえ、formタグのnameではなく input,textarea,selectなどの入力コントロールのname属性の属性値です。
freemac

2020/02/23 02:26

すみません!表記し間違えました。属性値を参照する このポイントを抑えて作業します。 返信ありがとうございました。
guest

0

var_dump($_FILES);してみればわかると思います。

投稿2020/02/23 00:25

otn

総合スコア85901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問